• ベストアンサー

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

可変長引数リストを用いたプログラムがコンパイルできません。 【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)

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

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

>>javac -version >javac: -version は無効なフラグです。 javac コマンドが -version オプションに対応していないことから、 JDKのバージョンが古いと予想します。 # 昔のjavac コマンドは -version オプションに対応していなかった。 JDKのインストールや、環境設定の確認をするとよいでしょう。

Zephyranthes
質問者

お礼

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

Zephyranthes
質問者

補足

環境変数pathの内容を確認したのですが、その中にこんな部分がありました。 (前略)\Java\jdk1.5.0_13\bin この中のjavac.exeがコンパイルに使われていると考えていますが、ファイルのフルバージョンは1.5.0_13-b05となっています。これなら-version 1.5を認識しそうだとは思うのですが…… 夜に別のPCで確認してみます。

その他の回答 (1)

noname#94983
noname#94983
回答No.1

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

Zephyranthes
質問者

お礼

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

Zephyranthes
質問者

補足

それもやってみたのですが、こうなってしまいます。 >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 標準オプションの概要を出力する

関連するQ&A