/ /カスタムクラスパスコンテナを介して追加されたクラスが、コード補完に使用できない理由は何ですか? - java、eclipse、eclipse-plugin、eclipse-jdt

コード補完に使用できないカスタムクラスパスコンテナを介して追加されたjarファイルのクラスはなぜですか? - java、eclipse、eclipse-plugin、eclipse-jdt

コード補完でカスタムクラスパスコンテナを介して提供されるクラスを取得するために必要なものは何ですか?

私は正常にカスタムを実装しましたクラスパスコンテナ。プロジェクトにライブラリを追加します。ワークスペースに同じ名前のプロジェクトが存在しない場合は、特定のフォルダ内のすべてのjarをビルドパスに追加します。その場合、プロジェクトが参照されます。

今これは明らかにうまくいくように思えます。それらのjarファイルのクラスからコードがコンパイルされますが、コード補完の提案ではクラスは表示されません。ワークスペースに正しいプロジェクトがあると、そのようなクラスがコード補完で参照されます。

私はこれに到達するために次のステップを実行しました。 IBMのチュートリアル

  • ClasspathContainerInitializerを実装する
  • 追加設定用にClasspathContainerPreferencePageを実装する
  • IClasspathContainerを実装する

コンテナをプロジェクトに追加すると、期待通りにパッケージエクスプローラにjarが表示されます。 (該当するプロジェクトがない場合にのみJarがあり、ログには期待される結果が表示されます)

私は経由で統合されたjarのクラスを使用できますクラスパスコンテナにはコンパイラエラーはなく、コード補完やクイックフィックスでは正しいインポートを追加できません。だから私はたぶん、いくつかの拡張ポイントに貢献していないかもしれないと思う。

回答:

回答№1は1

答えは基本的には次の3つの部分を実装する以外に何もする必要はありません。しかし、それは正しい方法で行う必要があります。

ClasspathContainerPreferencePage それをプロジェクトに追加するためのコンテナを準備します。

クラスパスコンテナ エンティティがプロジェクトに追加されるようになります。このためには、必要なすべてのメソッドを正しく実装することが重要です。私の問題は、メソッドで間違った定数を返すことでした getKind()。戻るのではなく IClasspathEntry.CPE_CONTAINER 私はちょうど使用する必要が IClasspathContainer.K_APPLICATION コードの補完はそのままで完了しました。

public int getKind() {
return IClasspathContainer.K_APPLICATION;
}

そして最後に ClasspathContainerInitializer コンテナを準備し更新するためのものです。


回答№2の場合は0

私はEclipse Lunaを使用し、Eclipseはカスタム外部JARからでもコードを自動完成します。既にあなたがいなくても問題が解決されたら、ルナにアップグレードすることを検討するべきです