Eclipseエラー:必要な.classファイルから間接的に参照されていますか?


185

Eclipseでエラーが発生しました。このエラーメッセージの意味:

タイプiglu.ir.TermVectorは解決できません。必要な.classファイルから間接的に参照されている


21
プロジェクトのソースパスにiglu.ir.TermVectorを含むjarを追加します。
Harry Joy、

2
あなたは必ずクラスが提供されている場合は、清潔で、あなたのプロジェクトのすべてのリフレッシュをしてみてください
ミルコ

私のjarファイルに一時的な依存関係があるため、これが起こりました
Janac Meena

丁度!このjarはpom.xml依存関係に存在する必要があります。
gaurav

回答:


193

つまり、「使用するクラスには、クラスパス上にない別のクラスが必要です。」(Harry Joyが示唆するように)必要なjarをクラスパスに追加することを確認する必要があります。


3
さまざまなケースで私を大いに助ける普遍的で単純な答え:) THX
Mariusz Chw

特にクラスを削除しようとしている場合は、欠落しているタイプの参照について親クラスを確認してください。このメッセージが常にそうであるとは限らない場合、それはおそらくほとんどの場合それが意味することです。
butallmj 14

はい、私はそれが参照されたjarにいくつかの不足しているjarが原因であることがわかりました:)ありがとう。
Ali Imran 2014年

21
@Arne、なぜ間接的に参照されていると言うのですか?それはまったく参照されていないと言ったのではないでしょうか?
Pacerier 2014年

2
真実ではない@Pacerier。この型を直接参照しているのはコードではなく、コードが使用するものであるため、コードからその型への依存関係は「唯一」の推移的ですが、そこにあります。「間接的に」はどこを見ればいいかを教えてくれます。
hiergiltdiestfu 2015

22

これは、実際のエラーであるのと同様に、Eclipseが混乱している問題である可能性があります。エラーを無視して、endpointInterfaceがエラーを報告するWebサービスを実行しましたが、実行するたびにダイアログを処理する必要があることを除いて、問題なく実行されました。何もわからない、もう1つの不透明なエラー。


また、瓶に入っていません。含まれているすべてのプロジェクトに含まれているプロジェクトの1つにあり、関連性があります。
Jerry Miller

3
私は日食でこの問題を経験しましたが、mavenによるビルドはうまくいきました。修正は、必要なクラスを含むEclipseワークスペースのプロジェクトを削除して再インポートすることでした。
PiersyP 2014

これは時々発生する可能性がありますが、同じ応答を返すエラーに遭遇し、プロジェクトをビルドできません。
Christopher Connery

13

それは時々私に起こります、私は常に「mvn eclipse:clean」コマンドでそれを修正して古いプロパティをクリーンアップしてから、mvn eclipse:eclipse -Dwtpversion = 2.0を実行します(もちろんWebプロジェクトの場合)。保存された古いプロパティがいくつかあるため、Eclipseが混乱することがあります。


プロジェクトをクリーンアップし(Project-> Clean ...から)、うまくいきました。
Anu Shibin Joseph Raj 2017

mvn eclipse:cleanおよび/またはmvn eclipse:eclipseはそれを機能させる魔法のトリックのようです。
Antoine Martin

13

ローカルmavenリポジトリが破損しているため、このエラーが発生しました。

したがって、問題を修正するために、私がしなければならなかったことは、リポジトリに移動し、関係する.jarがあったフォルダーを削除してupdate maven、Eclipseを強制することだけでした。


1
これは私にとってはうまくいきましたが、上記はすべてうまくいきませんでした。この問題は、私のチームメイトの1人がpomからリポジトリのバージョンを更新したときに発生しました。
iaL

8

これは既知の問題(バグ67414)であり、3.0で解決されたようです。誰かが3.4でも発生しているとコメントしています。

当面の回避策は、JREシステムライブラリをプロジェクトから削除し、再度追加することです。

Here are the steps:

ビルドエラーのあるプロジェクトのプロパティに移動します(右クリック>プロパティ)

[ビルドパス]セクションの[ライブラリ]タブを表示します

リストから「JREシステムライブラリ」を見つけます(これがない場合、このエラーメッセージはEclipseのバグではなく、プロジェクトの構成が間違っています)。

「JREシステムライブラリ」を削除する

[ライブラリを追加...]をクリックし、[JREシステムライブラリ]を選択して、プロジェクトに適切なJREを追加します(例: 'Workspace default JRE')

ライブラリの選択で[完了]をクリックし、プロジェクトプロパティで[OK]をクリックして、プロジェクトの再ビルドを待ちます

うまくいけば、エラーは解決されます...


はい、私はspring-web-3.0.1.RELEASEで同じ問題を抱えていました。http.csrf()を作成したときに、pom.xmlで依存関係として登録されており、一部の参照で既に依存関係として機能しています。 disable()。cors()。disable()。httpBasic()。and()。authorizeRequests().antMatchers(PUBLIC_MATCHERS).permitAll()。anyRequest()。authenticated(); 故障した後、jarファイルをダウンロードして、従来の手動の方法でインポートしました。
Tsakiroglou Fotis 2017

5

このエラーは、jarファイル内のクラスがjarのフォルダー構造と同じ構造に従っていない場合に発生します。

たとえば、クラスファイルにパッケージcom.test.examがあり、このクラスファイルから作成されたclasses.jarに構造test.exam ...がある場合、エラーがスローされます。classes.jarのパッケージ構造を修正して、それをecplipseビルドパスに含める必要があります...


4

eclipseが別のバージョンのjdkで動作していたため、この例外が発生しました。正しい、クリーン、ビルドに変更して動作しました!


3

私はEclipse 4.4.2でこの問題の興味深い事例がありました。私のプロジェクト(P1)は、同じ名前で引数の型が異なる2つのメソッドを持つ外部クラス(プロジェクトP2)を参照しました。

public static void setItem(Integer id) …
public static void setItem(Item item) …

タイプItemは3番目のプロジェクトP3に含まれていましたが、ここには表示したくありませんでした。P1は最初のメソッドのみを呼び出しました。

ExternalClass.setItem(Integer.valueOf(12345));

使用される第二の方法は、だからItemクラスを使用していなかった、そしてP3はコンパイル時クラスパスになかったことは事実である-それが使用されていない場合は、なぜそれする必要があります。

それでもEclipseは私に言った

The type ...Item cannot be resolved.
It is indirectly referenced from required .class files

コマンドラインからコンパイルしても、このような問題は発生しませんでした。2番目のメソッドの名前(ここでは未使用)を変更すると、Eclipseでも問題が解決しました。


2
Eclipse Photonリリース(4.8.0)でもまったく同じ問題が発生しています
Delphin


2

それでも設定に問題がない場合は、プロジェクト->ワークスペース内のすべてのプロジェクトをクリーンおよびクリーンにしてみてください。

編集:申し訳ありませんが、verbose_modeの提案は表示されませんでした...同じこと


2

私にとっては、古いjarセットが長い間使用されている状態でjdkを1.8.0_60にアップグレードすると発生します。jdk1.7.0_25にフォールバックすると、これらの問題はすべてなくなります。JREとライブラリの互換性に問題があるようです。


1

コードで何も変更せずにsvn設定をいくつか変更しただけでエラーが発生しました。プロジェクトをクリーニングするだけでエラーが修正されました。


1

私の場合、私はプロジェクトを作成し、その作られたminSdkVersion=9targetSdkVersion=17。自動生成したものを使用しましたlibs/android-support-v4.jar。私はまたの使用をしなければならなかったActionBarActivity使用しますandroid-support-v7-appcomapt.jar。そのため、android-support-v7-appcompat.jarファイルをandroid-sdk/extras/andrid/support/v7/appcompat/libsフォルダーからコピーして、プロジェクトlibsフォルダーに貼り付けました。そして、これは上記のエラーを引き起こしました。つまり、基本的には、プロジェクトフォルダにもandroid-support-v4.jarファイルを置く必要がありました。私の知る限りでは、ファイルはファイルに依存していました。したがって、私のプロジェクトではなく、ファイルを自動的に作成する必要がありました。android-sdk/extras/andrid/support/v7/appcompat/libslibsv7.jarv4.jarv4.jarv4.jar


1

すばやく簡単にこの方法で修正しました(Windows XP Home EditionではADTバージョン:v21.0.0-531062を使用しています)

  1. マニフェストファイルを開きました。
  2. 既存のプロジェクトminSdkVersionをmaxSdkVersionと同じ値に変更しました(アドバイス:新しいプロジェクトを作成し、それがmaxSdkVersionであるかを確認することをお勧めします)
  3. マニフェストファイルを保存します。
  4. プロジェクトを右クリックし、[プロジェクトのビルド]を選択します。
  5. トップメニューから:プロジェクト-クリーン..-関連するプロジェクトのみをチェックします。下の[すぐにビルドを開始する]と[選択したプロジェクトのみをビルド]をオンにして、[OK]をオンにします。
  6. Javaファイルを開きます-赤いエラーはもうありません!
  7. 上記の手順1に戻り、Back minSdkVersionを元の値に変更します(できるだけ多くのAndroidバージョンをサポートするため)。

それは機能しましたが、問題は数日ごとに再発します。私は上記と同じことを行い、解決して成長させます。


0

すでに提案されているクラスファイルの欠落の原因に加えて、このエラーは重複するクラスファイルを示している可能性があります。ビルドパスのクラスファイルがビルドパスに複数の定義を持つ別のクラスを使用している場合、Eclipseはこのエラーを報告します。


0

あなたは私たちにほとんど詳細を与えないので、おそらくあなたがしたことは、信じられないほど簡単な間違いですが、

Build Path > Configure Build Path > Projects

そこから追加のプロジェクトフォルダを追加する代わりに、

Build Path > Configure Build Path > Libraries

代わりにそこからプロジェクトフォルダを追加しました。

これは、コードがすべて正しい場合に間違いなくctrl+space当てはまりますが、com.your.additionalprojectを参照するインポートステートメントではなく、ショートカットを使用してインポートを自動的に再編成すると、参照はすべてbin.com.your.additionalprojectを指します。

ビンに注意してください。つまり、他のプロジェクトフォルダー構造をライブラリーとして扱うことにより、クラスを間接的に参照しているため、IDEは、参照しているバイナリクラスを正確に見つける作業をすべて実行しています。

これを修正するには、ライブラリからフォルダを削除し、代わりに[プロジェクト]タブに追加して、インポートを再編成します。プロジェクトは正常に機能するはずです。


0

新しいEclipseバージョンを使用し、古いEclipseバージョンで使用していた以前のワークスペースを使用しようとすると、このエラーが発生しました。

ここに私が問題を解決する方法があります:

パッケージエクスプローラーでプロジェクトを右クリック->プロパティ-> Javaビルドパス->ライブラリ-> JREシステムライブラリでエラー(クロスサイン)が表示されます。パスが見つからないため。-> JREシステムライブラリをダブルクリックします-> [ワークスペースのデフォルトJRE]オプションを選択します->完了-> OK。->動作します

ご参考までに。


0

私の場合は、pom.xmlファイルに新しい依存関係を追加した結果です。

新しい依存関係は、古いバージョンのライブラリ(2.5)に依存していました。同じライブラリがの別のライブラリにpom.xml必要でしたが、バージョン3.0が必要でした。

何らかの理由で、Mavenがこれらの競合に遭遇すると、最新バージョンが省略されます。Eclipseで表示しpom.xmlているときに、下部にある「依存関係の階層」タブを選択して、依存関係がどのように解決されるかを確認できます。ここで、問題のライブラリ(およびクラス)がこの理由で省略されているかどうかを確認できます。

私の場合、新しいバージョンをロックするのと同じくらい簡単でした。エントリを右クリックすると、これを行うことができます-コンテキストメニューにエントリをロックするオプションがあります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.