こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

可変長引数リストを用いたプログラムがコンパイル不可

可変長引数リストを用いたプログラムがコンパイルできません。

【Sample.javaの内容】
class MyClass extends java.lang.Object {
void meth(String ... s) {
for (int i=0; i<s.length; i++) {
System.out.println(s[i] + " : ");
}
System.out.println();
}
}

public class Sample extends java.lang.Object {
public static void main (String args[]) {
MyClass mc = new MyClass();
mc.meth();
mc.meth("what", "is", "this");
mc.meth("this", "is", "an", "example");
}
}

【普通にjavacでコンパイル】
>javac Sample.java
Sample.java:2: <identifier> がありません。
void meth(String ... s) {
^
Sample.java:8: <identifier> がありません。
}
^
エラー 2 個



【-sourceオプションをつけてコンパイル】
>javac -source 1.5 Sample.java
javac: 1.5 は無効なソースバージョンです。
(以下javacのusageが延々と表示される)
※-version 1.6でも同様の結果でした。



【バージョン情報】
C:\>java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)

投稿日時 - 2009-02-06 14:47:25

QNo.4694261

困ってます

質問者が選んだベストアンサー

>>javac -version
>javac: -version は無効なフラグです。
javac コマンドが -version オプションに対応していないことから、
JDKのバージョンが古いと予想します。

# 昔のjavac コマンドは -version オプションに対応していなかった。

JDKのインストールや、環境設定の確認をするとよいでしょう。

投稿日時 - 2009-02-06 15:54:28

補足

環境変数pathの内容を確認したのですが、その中にこんな部分がありました。
(前略)\Java\jdk1.5.0_13\bin

この中のjavac.exeがコンパイルに使われていると考えていますが、ファイルのフルバージョンは1.5.0_13-b05となっています。これなら-version 1.5を認識しそうだとは思うのですが……

夜に別のPCで確認してみます。

投稿日時 - 2009-02-06 16:15:02

お礼

思い切ってJDKを最新版に入れ替えてみたところ、問題なく動作するようになりました。
ありがとうございました。

投稿日時 - 2009-02-12 18:08:31

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

java -version は、JREのランタイム環境のバージョン。
javac -version でバージョンがどうなっているか要確認。

投稿日時 - 2009-02-06 14:50:02

補足

それもやってみたのですが、こうなってしまいます。

>javac -version
javac: -version は無効なフラグです。
使い方: javac <options> <source files>
使用可能なオプションには次のものがあります。
-g すべてのデバッグ情報を生成する
-g:none デバッグ情報を生成しない
-g:{lines,vars,source} いくつかのデバッグ情報だけを生成する
-nowarn 警告を発生させない
-verbose コンパイラの動作についてメッセージを出力する
-deprecation 推奨されない API が使用されているソースの位置を出力する
-classpath <path> ユーザクラスファイルを検索する位置を指定する
-sourcepath <path> 入力ソースファイルを検索する位置を指定する
-bootclasspath <path> ブートストラップクラスファイルの位置を置き換える
-extdirs <dirs> インストール済み拡張機能の位置を置き換える
-d <directory> 生成されたクラスファイルを格納する位置を指定する
-encoding <encoding> ソースファイルが使用する文字エンコーディングを指定する
-source <release> 指定されたリリースとソースの互換性を保つ
-target <release> 特定の VM バージョン用のクラスファイルを生成する
-help 標準オプションの概要を出力する

投稿日時 - 2009-02-06 15:06:22

お礼

やはりJDKのバージョンが古いのが原因だったようで、更新してみたところ無事動くようになりました。ありがとうございます。

投稿日時 - 2009-02-12 18:09:29

あなたにオススメの質問