• ベストアンサー

【ジェネリックス】コンパイルエラーが出ます。

毎度お世話になります。 Javaの勉強をしております。 テキストのとおりに打ち込んだのですがコンパイルエラーとなり 対処方法の目処が立ちません。。。 環境: OS:Windows2000 version:Java6 ソース内容 ===ここから===================== package test01; import java.util.*; public class Gen1 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); //リストに文字列を書き込む list.add("テスト1"); //リストから文字列を読み出す String s= (String)list.get(0); System.out.println(s); } } ===ここまで===================== コンパイルエラーの内容は以下のとおりです。 Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 トークン "<" に構文エラーがあります。AssignmentOperator が無効です。 トークン "=" に構文エラーがあります。正しくは != です。 トークンに構文エラーがあります。構成の位置が間違っています。 トークン ")" に構文エラーがあります。正しくは : です。 at com.sample.nsw2008101202.WordLoveSeeker3.main(WordLoveSeeker3.java:32) ソースコードのエラー該当箇所は↓になります。 List<String> list = new ArrayList<String>();  どなたか対象方法をご存知の方、ご教授ください。 よろしくお願い致します。

  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

コード自体には問題ないようです。私の環境ではエラーが出ることなくコンパイルできます。 どのようにコンパイルしていますか? もしコマンドラインでjavacを使っているのであれば、javac -versionを実行すると結果はどうなりますか? Genericsを知らない古いjavacを使っていたりするのではないかと思われます。

septem9
質問者

お礼

コンパイラがeclipseのバージョンに準拠しているとは 知りませんでした。 私が使っていたeclipseのバージョンが3.0.1で コンパイラは1.4か1.3しか選択できなかったので eclipseごとバージョンをあげたところ コンパイルが通り正常終了できました。 大変助かりました。 ありがとうございました!

septem9
質問者

補足

salsberry様 早速の回答ありがとうございます。 そうですか!ソースコードの問題でなければ 私のコンパイル環境に原因がありそうですね。 ちなみにコンパイルはコマンドラインではなく eclipse上からJavaアプリケーションの実行でおこなってます。 さっそく環境周りを見直してみます。 ありがとうございました!

その他の回答 (1)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

Eclipseを使っていると、標準ではJREのバージョンに関わらず古いバージョンにあわせたコンパイルが行われます。1.3か1.4になっていたかと。 環境設定でコンパイラの準拠レベルを5.0以上に設定してください。 設定場所はJavaコンパイラのタグだったかと思います。

septem9
質問者

お礼

そのようですね。 eclipseのバージョンをあげたら無事コンパイルが通りました。 ありがとうございました!

関連するQ&A

  • コンパイルエラー(匿名クラス)

    下記ソースがコンパイルエラーを起こしてどうしたらよいか分かりません。 下記エラー参照 Main.java:2: 型の開始が不正です。 new String(){ ^ Main.java:6: <identifier> がありません。 };ん。 (下記ソース) class NormalClass{ new String(){ public String ToString(int n){ return n + ""; } }; } class Main{ public static void main(String args[]){ NormalClass test = new NormalClass(); System.out.println(test.ToString(10)); } }

    • ベストアンサー
    • Java
  • コンパイルエラー(Threadオブジェクト化)

    Runnableを継承したNormalClassをThreadとしてオブジェクト化しようとしているのですが、コンパイルエラーが出現して困っています。どうすればいいでしょうか? 下記エラー参照 Main.java:1: NormalClass は abstract でなく、java.lang.Runnable 内の abstract メソッド run() をオーバーライドしません。 下記ソース class NormalClass implements Runnable{ } class Main extends Thread{ public static void main(String args[]){ test = new Thread(new NormalClass()); } }

    • ベストアンサー
    • Java
  • trim()メソッドの使用方法とキャストの仕方について

    こんばんは、今回はtrim()メソッドの使用方法とキャストの方法についてお伺い致します。 trimメソッドを使用して文字列の前後の空白を削除したいのですが、 通常 String str = " 「こんにちは」"; str = str.trim(); とコーディングしコンパイルして表示するとちゃんと「こんにちは」となるのすですが、これが ArrayList list = new ArrayList(); BufferedReader br= new BufferedReader(new FileReader(Test.txt); while((str = br.readLine()) !=null){ str = str.trim(); list.add(str); } br.close(); とコーディングしコンパイルは通るのですが、 「こんにちは」のままで"「"の前にある空白が削除されてません。 私なりに「型」の違いでが原因ではないかと思い、java.io.ArrayList型からjava.lang.String型へキャストしようとしているのですが、コンパイルエラーが出てしまします。 プログラムコードは ArrayList list = new ArrayList(); String s; s = (String)list; としています。 エラー内容は ScheduleControlCall.java:142: 変換できない型 出現: java.util.ArrayList 要求: java.lang.String s = (String)list; ^ エラー 1 個 となっています。 度々ですが、ご指導お願い致します。

    • ベストアンサー
    • Java
  • javaのコンパイルエラーについて質問

    macにてjavaを学習し始めた初心者です 真っ先に習うHello Worldのソースコードを書き、 class Hello01 { public static void main(String args[]){ System.out.printin("Hello Java World!"); } } コンパイルをしたところ以下のようなコンパイルエラーが表示されました Hello01.java:3: cannot find symbol symbol : method printin(java.lang.String) location: class java.io.PrintStream System.out.printin("Hello Java World!"); ^ どこかソースに欠けてる箇所があるのだと思いますが、 どこが間違っているのかいまいち分かりません。 どなたか分かる方、教えていただけますか? よろしくお願いします

    • 締切済み
    • Mac
  • どこにエラーがあるのでしょうか?

    public class Sample6_2 { public static void main(String[] args) { int probabilityOfRain = 20; if (30 <= probabilityOfRain) System.out.println("傘を持っていく");            System.out.println("傘を持っていく"); if (probabilityOfRain < 30) { System.out.println("傘を持って行かない");     System.out.println("傘を持って行かない"); } } } Exception in thread "main" java.lang.Error: Unresolved compilation problems: トークンに構文エラーがあります。これらのトークンを削除してください トークンに構文エラーがあります。これらのトークンを削除してください at Sample6_2.main(Sample6_2.java:8) と出ました。度々すいません。 どこにエラーがあるのでしょうか?

    • ベストアンサー
    • Java
  • Java何故エラーになるのですか?

    public class Sample3_1 { public static void notMain(String[] args) { System.out.println("not main"); } public static void main (String[] args) { System.out.println("こんにちは、Java"); System.out.println("私の名前は、コウゾウです。"); } } Exception in thread "main" java.lang.Error: Unresolved compilation problems: トークン "Invalid Character" に構文エラーがあります。このトークンを削除してください 構文エラーがあります。"}" を挿入して ClassBody を完了してください at Sample3_1.main(Sample3_1.java:10) "}" を挿入して」と書かれてますが、 "}" には間違いなさそうです。 どなたか解説のほどを宜しくお願い致します。

    • ベストアンサー
    • Java
  • シンボルを見つけられませんというエラーでコンパイルできない

    こんにちは。 Test.javaとTest2.javaというファイルを作りコンパイルしようとしたんですがタイトルのエラーが出てコンパイルできません。全く意味が分からなくて困ってます。 test.javaの中で Test2 test2 = new Test2(); という形でTest2クラスのインスタンスを生成しています。 同じフォルダの中にあるのに見当たらないというのはどうにも分かりません。 環境変数は CLASSPATH . PATH C:\Program File\Java\jdk1.5.0_06\bin となってます。

    • ベストアンサー
    • Java
  • コレクションクラスについて

    ●下記のコードについて質問があります import java.util.*; public class Test { public static void main(String args[]) { ArrayList<ObjectOne> list = new ArrayList<ObjectOne>(); list.add(new ObjectOne()); list.add(new ObjectOne()); list.add(new ObjectOne()); Collections.sort(list); } } class ObjectOne { private int x = 0; private int y = 0; } このソースをコンパイルすると、 シンボル: メソッド sort(java.util.ArrayList<ObjectOne>) 場所 : java.util.Collections の クラス Collections.sort(list); と、エラーが表示されてしまいます。 java.util.*をインポートしているので、上記のようなエラーはでないと 思うのですが、うまくいかないです。おそらく、ObjectOneクラスで 何か処理漏れが起きているのかもしれませんが、エラーとなる原因を 特定することができません。 エラーとなる原因と解消する手立てを教えていただければと思っております。 宜しくお願い致します。 「追記」 ArrayList<ObjectOne> list = new ArrayList<ObjectOne>(); の<ObjectOne>を消せばエラーはなくなりますが、 <ObjectOne>を消さない方針で考えがあればと思っております。

  • JAVAについて。コンパイルができません

    public class Main { public static void main(String[] args){ System.out.println("Hello World"); } } 上のソースで記述して、コマンドプロンプトでコンパイルしようとすると 下のような表示が起きます C:\Program Files\Java\jdk-12.0.1\bin>javac Main.java Main.java:1 エラー: Mainの書き込み中にエラーが発生しました: C:\Program Files\Java\ jdk-12.0.1\bin\Main.class public class Main { ^ エラー1個 何が原因でコンパイルされないかわからないです。 わかるかたいましたらよろしくお願いします。

  • Javaでコンパイルできなくなりました

    javaでコンパイルできなくなりました。今まではJava2 SDK バージョン1.4.2_03をインストールしてコマンドプロンプトからjavac、javaコマンドを用いコンパイル、実行していました。 そして、Eclipse(バーション3.0)というIDE環境に興味を持ちインストールした後にとりあえずもう一度コマンドプロンプトからjavacコンパイルしてみたらエラーがでるようになりました。 ソースを書くと長くなってしまうので簡単に説明すると、String sに"Hello World"を代入してSystem.out.println()で表示させるだけのプログラムです。Eclipseをインストールする前は実行できたのでソースに問題があるという事はありません。エラーメッセージは以下のような感じでした //エラーメッセージ 検出値 : java.lang.String 期待値 : String String s = "Hello World"; その後にソースで String s="Hello World";としていた行を java.lang.String s = "Hello World";に変更しました するとjavacではエラーが出なくなるのですがjavaコマンドで実行すると Exception in thread "main" java.lang.NoSuchMethodError: main というメッセージが出て実行できないです。 環境変数は、SDKインストール後、PATHC:\j2sdk1.4.2_03\bin;を加え、Eclipseインストール後は何も変更していません。 何が問題なのでしょうか?お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう