これはおそらく Eclipse の特異性とそのビルド パスの処理の 1 つであり、これまでにあらゆる種類の回避策をテストしたにもかかわらず修正できません。
この問題は、いくつかのプロジェクトのワークスペースに関連しており、それぞれが独自の JAR にコンパイルされます。
プロジェクト間の依存関係は、関連するものをビルド パスに追加することで解決されます (外部ツールやプラグインを使用しないMaven
か、他の外部ツールやプラグインを使用しません)。
Project -> Properties -> Java Build Path -> Projects
これらすべてのプロジェクトの中で、他のすべてのプロジェクトがそうであるのに対し、カップル (たとえば、com.example.p1
とcom.example.p2
) は 3 番目の (そして単純な) もの (たとえば、com.example.p3
) を認識することを拒否します。したがって、P3 はビルド パスに追加されますが、P3 からのすべての関連クラスは適切にインポートされ、そのような各クラスのソース コードは を押すことでアクセスできますがF3
、Eclipse は不平を言い続けます。
The import com.example.p3 cannot be resolved
と
SomeClass cannot be resolved to a type
はcom.example.p3.SomeClass
P3 クラスの 1 つです。
P3 プロジェクトの代わりにコンパイル済みの JAR をビルド パスに配置すると、問題は解消されます。ただし、P3 のコードは頻繁に変更され、ワークスペースをコンパイルして更新し続けて変更を反映させるのは時間の無駄です。言うまでもなく、これは IDE で発生するべきではありません (また、使用している他のプロジェクトでは発生しません)。 P3、まったく同じ Eclipse ワークスペース内)。
私はもう試した:
P1、P2、P3 の削除と再追加
すべてをクリーンアップして再コンパイルする
他のプロジェクトが P3 JAR をロードするかどうかを確認する
P3 を Eclipse ビルド パスの「注文とエクスポート」リストの一番上に置く
Eclipse の「Fix project setup」提案を使用します (赤い下線付きエラーのコンパイル行にマウスを合わせると使用可能になります)。実際には、このオプションは P3 またはその JAR のいずれかをビルド パスに追加することを提案しますが、P3 が追加されると問題が再発します。
P3 ソース (JAR ではない) を使用する場合の P1 と P2の.classpath
ファイルは、他のすべてのプロジェクトと同じで、次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="classes" path="src"/>
<classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
<classpathentry kind="lib" path="<JAR_path/JAR_file>"/>
... // Multiple other JAR files
<classpathentry combineaccessrules="false" kind="src" path="/p3/">
<classpathentry kind="output" path="bin"/>
</classpath>
ファイルは、ワークスペース内の.project
すべてのプロジェクトでも同じです。
何か案は?