2016-11-10 14 views
0

現在Eclipseでプラグインを開発中です。 java.lang.ClassCastExceptionが:によって引き起こさEclipseプラグインの開発 - ClassCastExceptionはabc.xyzをabc.xyzにキャストできません

:言っラインが例外をスロー

XYZ object1 = XYZ(object2); 

:私は、次のコードで問題が発生しているabc.XYZがabc.XYZにキャストすることはできません


XYZクラスが別のプラグインからです。残念ながら、このプラグインはパッケージを表示しません。したがって、それを依存関係として設定すると、ClassDefNotFound例外がスローされました。

幸いにも、私はプラグインの.jarを持っていて、それを私のプラグインのビルドパスに追加しました。私がそうしたとき、それはまだClassDefNotFound例外を返しました。私は周りを見渡して、参照されたライブラリが自動的にJVMによって検出されないことを発見したので、プラグインのbuild.propertiesMANIFEST.MFbin.includesセクションに上記のjarを追加するための解決策に従った。

上記の解決策を実行した後、もう一度試しましたが、今はclassCastExceptionがあります。今のところ、jarファイルのクラスXYZがロードされています。いくつかの研究をして、私はXYZクラスの両方のクラスローダーが異なることを発見しました。私は何の措置を講じるべきか、かなり固執しています。ここで

は、問題全体の要約です:

  • 必要なクラスが別のプラグインからです。このプラグインにはクラスが表示されません。
  • 依存関係プラグインのjarファイルをビルドパスに追加しました。
  • ClassDefNotFoundExceptionがスローされます。
  • 私のプラグインのmanifest.mfとbuild.propertiesの設定が更新されました。
  • ClassCastExceptionがスローされます。

誰かがこの問題の解決法を持っている場合、またはこれを解決するために私ができることについての入力があれば、素晴らしいことでしょう。

提供されるヘルプ/入力いただきありがとうございます。

答えて

1

これはできません。 Eclipseプラグイン・システムは、エクスポートされていないクラスにアクセスしないように設計されています。

プラグインにプラグインjarを含めると、常にクラスローダーとは異なるクラスローダーが使用され、クラスキャスト例外が発生します。

これらのクラスにアクセスする唯一の方法は、これらのクラスをエクスポートするように他のプラグインを変更することです。

+0

私は現在、この後に他のプラグインを編集中です:http://stackoverflow.com/questions/12448509/how-to-edit-an-existing-eclipse-pluginしかし、私はそれをエクスポートすることはできません。エクスポートウィザードに表示されません。何か案は? –

+0

何も表示されていませんか?プラグイン開発環境がインストールされている場合、[ファイル]> [エクスポート]> [展開可能なプラグインとフラグメント]が常に表示されます。プラグインが変更された署名をしていると、エラーが発生することに注意してください。 –

+0

インポートされたプラグインが 'Deployable Plugins and Fragments'ダイアログに表示されません。 –

関連する問題