2009-11-26 17 views
19

Eclipse Galileoに奇妙な問題があります。
JREとしてJava 1.6を設定しました。このコード行でCollection型は一般的ではありません。引数でパラメータ化することはできません<? extends E>

List templates = new ArrayList(); 

私はEclipseの問題のリストに次のエラーを参照してください。

Collection型は汎用的ではありません。引数でパラメータ化することはできません

私はこのプロジェクトをAntでビルドする際に問題はありません。
どうすれば修正できますか? Eclipseの問題のように見えますが、このエラーが原因でIDEからプロジェクトをコンパイル/パブリッシュできません。

+1

はその行番号で実際にあなたのエラーですか?次のようなことをすれば、エラーはどのような行になりますか:リストテンプレート; 新しいArrayList(); 2行目の割り当てを行わないで、何が起こるか教えてください。そのエラーのカスタムコレクションクラスがシグネチャでないようです:Collection ...意味がありません。 –

答えて

6

:問題がでましたcryptixライブラリ。私がjavaビルドパスからそれを削除すると、プロジェクトはうまくコンパイルされます。

38

どのようなListをインポートしますか? (このthread from 2006を参照)

java.awt.Listまたはjava.util.List

適切なコメント日食として、java.awt.Listがパラメータ化されていない、ので、また

  • Java Build path


    )チェック:それはJ2SE 1.4.2のライブラリへの参照を含めることはできません。

  • Source Compatibility:プロジェクトプロパティ - > Javaコンパイラ設定、ソース互換性5.0または6.0。それ以外

は、問題back in 2005最新のEclipse 3.1のベータがJ2SE5をサポートしてたくさんありましたが、これはそれ以来修正されました。

プロジェクトで最新のJDK6を使用してください。

+1

import java.util.List; – dbf

+1

良いキャッチ。私の好きなもの(私が注意を払わないとき) - 一方で、それはアリに構築され、リストについてだが、コレクションについては不平を言っていない。 –

1

時にはそれが日食しゃっくりとeclipse -cleanだとすべてのプロジェクトをリフレッシュすることができます。

編集

が、それはあなたとあなたのコードを置き換え何も変更しない:

java.util.List templates = new java.util.ArrayList(); 

あるいは

java.util.List<Object> templates = new java.util.ArrayList<Object>(); 

+0

私はすでに試してみました。また、.metadataフォルダを削除してワークスペースを再作成しようとしました。 – dbf

0

いくつかのアイデア:

  • プロジェクトで使用されているJREのライブラリを確認します(パッケージエクスプローラを確認してください)。
  • インストールされているJREをEclipse設定でチェックします(antで使用されているものと同じです)。
  • 本当にエラーの原因であるかどうかを確認するためだけに行をコメントアウトしてください。
  • 最初から行全体を再入力してください。
  • 新しいフォルダ(テスト)にeclipseの新しい(クリーン)バージョンをインストールします。
1

は、プロジェクト内の上部にある「... JREシステム・ライブラリー」のエントリを置くプロパティ、Javaのビルド・パスは、Googleからそこに着くだろう人のために、順序およびエクスポート

2

ちょっと、わかりにくいライブラリを削除しても機能しませんでした。しかし、私はJRE System Libraryを一番上に置き、それがうまくいった。本当に変だ。

+2

プロジェクト - > Javaビルドパス - >オーダーとエクスポートを右クリックし、JREシステムライブラリ[jkd1.6]を先頭に移動します。私のために働いた。 –

+2

以下の理由から私のために働きました: "import java.util.List;"ジェネリックの日付より前にリストをインポートしていました。見つけ出す方法は、EclipseでCtrl +「左クリック」です。 「public interface List extends Collection 」ではないList.classがList.classを開くと、ジェネリックを知らないListをインポートしています。 –

0

以上のJava 1.5

かに等しいとするJavaビルドパスの参照を使用すると、「インポートjava.util.Listに」ステートメントを追加しようと、あなたは

日食は、それが矛盾していると言っていることがわかります他のいくつかのリストタイプで

は、例えば、それは、これらの輸入に

文を回避しようなどcom.lowagie.xx.xxx.Listと競合することができる

3

あなたのクラスリストに名前を付けましたか?すなわち:

import java.util.*; 

public class List { // can't do this, name this something else. 

    public static void main(String[] args) { 
     List<Integer> l = new ArrayList<Integer>(); 

    } 

} 
1

使用 "の輸入はjava.util.List" の代わりにデフォルトのインポートの

"輸入antlr.collections.List;"

とコレクションAPIの一般的なサポートのためにJRE5以上を使用する....例えば

1

public class AClass<T extends Object> 
{ 
public HashMap<String, String> myMap; 
} 

私が書く場合:

public class BClass 
{ 

private AClass aClass = new AClass(); 

public void test() 
{ 

aClass.get("test"); 
//return Object class 

} 

} 

が、私が書く場合:

public class BClass 
{ 

private AClass<?,?> aClass = new AClass<?,?>(); 

public void test() 
{ 

aClass.get("test"); 
//return String class 

} 

} 
20

まだ返信していても、まだ問題に直面している他の人にとっては役に立ちます。 私は全く同じ問題を抱えていました。 Listはutil.Listで適切でした。解決策は、図書館の輸出を注文することでした。 あなたはMavenのか、他のライブラリを使用している場合は、次のプロジェクトで

を - >ビルドパス - >設定はビルドパス - >注文&輸出

チェック「JREシステムライブラリは、」「Mavenの依存関係」

を超えるべきです

これは私のために働いた。

+0

これも私のために働いた。問題は、Eclipse Jetty(HTTPサーバー)が、再パッケージ化されたjava.util.Listを含むosgi foundationというApache Felix jarファイルを取り込んでいたことです。 –

+0

OMG!これも私のために働いた。巨大な時間を節約しました。ありがとう。 – Ahamed

0

import antlr.collections.List;を削除し、java.util

1

を使用するセンター + スペースをクリックしてください、私はそれが私

のために働い

import java.util.Iterator; 

にインポート

import javax.swing.text.html.HTMLDocument.Iterator; 

を変更

関連する問題