2

Eclipse環境内で正常に動作するEclipseプラグインがあります。

これを jar ファイルにエクスポートしたかったので、[エクスポート] > [デプロイ可能なプラグインとフラグメント] を選択しました。

ここに画像の説明を入力

jar ファイルを取得できましたが、エラーが報告されました。

ここに画像の説明を入力

ログ ファイルを開くと、1242 個の問題 (191 個のエラー、1051 個の警告) があることが報告されています。これは、エラー ログからのコピーです。

2. ERROR in /Users/LSclipse/src/lsclipse/LSDiffRunner.java (at line 61)
    import edu.washington.cs.induction.OnePipeLineScript;
           ^^^
The import edu cannot be resolved
----------
3. ERROR in /Users/LSclipse/src/lsclipse/LSDiffRunner.java (at line 261)
    OnePipeLineScript.getMatchingForRefFinder(projName, proj1, proj1Loc
    ^^^^^^^^^^^^^^^^^
OnePipeLineScript cannot be resolved

エラーが発生したのはなぜですか? 2049 の警告がありましたが、Eclipse IDE でプラグインをコンパイルするとエラーは発生しませんでした。

追加した

メイン プロジェクトは他の 2 つのプロジェクトを参照し、多くの外部ライブラリを参照します。パッケージ ビューと Java ビルド パスを添付します。

ここに画像の説明を入力 ここに画像の説明を入力

4

4 に答える 4

3

この問題には複数の問題が関係していました。ただし、主な問題は、プロジェクトapimatchingoriginanalysisが Eclipse プラグインではなく、単なる Java プロジェクトであるということでした。その結果、これら 2 つのプロジェクトは最終的な jar ファイルに含まれず、ビルドが中断されました。

2 つのプロジェクトをメイン プロジェクトにシンボリック リンクする

src ディレクトリをメインの Eclipse プラグイン プロジェクトにシンボリック リンクすることで、この問題を解決しました。

ln -s /workspace/seal/edu.ucsc.originanalysis/src /LSclipse/originanalysis
ln -s /workspace/seal/edu.ucsc.apimatching/src /LSclipse/apimatching

Java Build Path/Source タブから、これら 2 つのインクルード プロジェクトをソースとして追加しました。Eclipse Javaに必要なソースフォルダがありません: 'src'

これで、Eclipse プラグインの jar ファイルがエラーなしで作成されました。

ここに画像の説明を入力 ここに画像の説明を入力

次に、F-5 をクリックしてプロジェクト エクスプローラーを更新し、それらが Java src ディレクトリであることを確認します。

[ビルド] タブで、含まれているプロジェクトを選択します。

ここに画像の説明を入力

bin.includebuild.properties タブでの更新source..は重要です。bin.include順序付けも重要であることを理解する必要があります。lib/cdtparser.jar および lib/cdtcore.jar は、それらのユーザーの前に配置する必要があります - origin analysis/

ここに画像の説明を入力

インクルード プロジェクトの jar ファイルをメイン プロジェクトにコピーする

また、これらのプロジェクト ファイル内のいくつかの jar ファイルをメイン プロジェクトにコピーし、それらをBinary Buildタブで選択する必要がありました。

ここに画像の説明を入力

そして、Runtime/Classpath タブに tim を追加します。

ここに画像の説明を入力

実行環境で JavaSE-1.6 を選択します。

「スーパークラス メソッドをオーバーライドする必要があります」というエラーがたくさんあります。プロジェクトを Eclipse にインポートした後、「スーパークラス メソッドをオーバーライドする必要があります」というこの投稿のヒントを参考にして、この問題を解決するために J2SE-1.5 を削除しました。

ここに画像の説明を入力

于 2012-12-22T04:53:17.403 に答える
1

これは、潜在的な問題に対する潜在的な解決策として疑問を持ち、見ているものです。

  1. このクラスは、参照された jar から取得されていますか、それとも実際のプラグイン edu.washington.cs.induction.OnePipeLineScript にありますか?

  2. あなたはたくさんの悪いフォルダーを持っているようで、build.properties ファイルに警告が表示されているかどうか疑問に思っています。また、build.properties ソース内の各ソース フォルダーに対してもこれが定義されているのではないかと考えています.. = src/

  3. 外部 jar ライブラリは、正しくないソース タイプのフォルダーにあるようです。これは非ソース フォルダー (パッケージ アイコン デコレーターによってソース フォルダーを指定できます) である必要があり、ビルドに jar が含まれるように実行時に lib がチェックされていることをマニフェスト エディターで確認する必要があります。ソースフォルダーとしてマークを解除するには、ナビゲータービューのドロップダウンメニューを選択してフィルターに移動し、.resources のチェックを外します。これにより、そのファイルに .classpath ファイルが表示され、フォルダーが kind="src" であることがわかります (私は信じています)。それを削除します。

  4. どういうわけか、ソースフォルダーをリンクしているようにも見えますが、これはお勧めしませんが、プラグインをエクスポートするときに問題が発生するかどうかはわかりません. リンクされたソースフォルダーを避けることができれば、より良いでしょう。

また、プレーンJavaアプリケーションのJavaビルドパス構成を、Javaビルドパスではなくmanifest.editorを介して構成されていないOSGIで実行されているプラ​​グインと混同しているようです。 OSGIが異なるため、Javaビルドパスを構成します。これも問題を引き起こす可能性があります

于 2012-12-21T22:40:47.417 に答える
1

プラグインを開発する場合、サードパーティのライブラリを Java のクラス パスに追加することはできません。標準的な Java アプリケーションを構築する方法ですが、プラグインは OSGi バンドルの一種であり、それ自体にクラスのロードに関する規則があります。

正しい方法は、プラグインのクラス パスにサード パーティのライブラリを追加することです。

以下の宣言をプラグインのMANIFEST.MFに追加します。

Bundle-ClassPath: lib/log4j-1.2.7.jar,
 xml-apis.jar,
 ...

リンク[1][2]を確認して理解してください。

于 2012-12-21T07:56:55.413 に答える
-1

[オプション] で [ワークスペースでコンパイルされたクラス ファイルを使用する] を選択します。

于 2018-09-12T06:32:35.437 に答える