2011-07-20 4 views
1

すべて、のEclipse SDKでのデバッグBIRT ODAドライバ - NoClassDefFoundErrorが

私は、これはBIRT/EclipseのSDK /開発者の問題であれば、あまりにもわからない...

私たちは、BIRTを覗くの過程にありますEclipse SDK(インディゴ)用私たちは、BIRTの統合と拡張の本にJason Weathersbyらが投資しました。基本的にODAドライバーとODAドライバーUIの2つのプラグインプロジェクトである、最初のODAドライバーを作成するプロセスを紹介します。残念ながら、デバッグについては決して詳しく述べていません。

ODAドライバがデータを取得するために私たちのアプリケーションにインタフェースするというアイデアがあります。 Properties-> Java Build PathからODAドライバー・プロジェクトにアプリケーションJARファイルの外部JAR参照を追加しました。これは、Eclipseワークスペースの参照されたライブラリの下に表示されます。アプリケーションが使用するすべての参照JARは、参照ライブラリの下にも表示されます。

public static String getIt() 
{ 
    return "Ding Dong"; 
} 
:物事は、私はすぐに説明しますどの作業をしていないとして

は、私はまた、単一の静的メソッドでHelloThereと呼ばれる単一のクラスを持っているのEclipse SDKワークスペースにHelloWorldXのJavaプロジェクトを作成しました

これをProperties-> Java Build PathからODAドライバープロジェクトへのプロジェクト参照として追加しました。だから私は何をやった

...

は私が私のEclipse SDK IDEでの2つのプロジェクトを作成したプロジェクト

を作成します。 ODAドライバには、コードで呼び出すレガシーアプリケーションのJARファイルへの参照が含まれています。

これで、HelloWorldXプロジェクトも呼び出されます。

は、デバッグ・セッション

私はオープンコネクション#でブレークポイントを追加して開始します。このブレークポイントは最初の行にあります。

デバッグツールバーの項目をクリックしてデバッグセッションを開始します。初めてEclipseアプリケーションとして実行を選択したことを知らせるメッセージが表示されます。これは次のようにEclipseのSDK IDEに私はオープンファイル - >からレポートデザイナーのファイルをロードすることができますEclipseのSDKの新しいセッション...

レポートの負荷を発生させます:

BIRT Report Eclipse

データソースを右クリックし、新しいデータソースを選択して、新しいデータソースを作成します。 「新規データ・ソース」ダイアログで、私のODAドライバーの名前を選択し、「次へ」をクリックします。接続のテストボタンが表示されたダイアログが表示されます。

[Connection#open]でブレークポイントに当たる[Test Connection]ボタンをクリックします。

次のコードをステップ実行すると、NoClassDefFoundErrorがスローされます。

System.out.println(HelloThere.getIt()); 

私は私が参照している外部JARファイル内に、当社のレガシーコードのいずれかへの呼び出しを行うときに例外もスローされます。EclipseはOdaConnection.open(Properties)行のワークスペースにウィンドウを表示します:267にはソースがありません。ボタンにはソースルックアップパスの編集...アプリケーションのソースパスを設定するためのさまざまな組み合わせを試しました。ボタンをクリックすると、次のダイアログが現れます:次のように一言で言えば

Edit Source Lookup Path

をスタックトレースは次のとおりです。

org.eclipse.datatools.connectivity.oda.OdaException ; 
    java.lang.NoClassDefFoundError: HelloWorld/HelloThere 
     at org.eclipse.datatools.connectivity.oda.profile.OdaConnectionWrapper.open(OdaConnectionWrapper.java:215) 
     at org.eclipse.datatools.connectivity.oda.profile.OdaConnectionWrapper.<init>(OdaConnectionWrapper.java:59) 

... (some trace omitted as big!) 

Caused by: java.lang.ClassNotFoundException: HelloWorld.HelloThere 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513) 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) 
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 49 more 

私はとても優しくしてくださいEclipseが新しいです。誰かがどこに見えるか、私が投稿すべきその他の情報を教えてもらえますか?私は何かを間違っているかもしれないが、確かにBIRT ODAドライバーをデバッグする最初の人ではない。私はこれを解決するためにインターネットのいたるところを見てきました。私が見つけた唯一の記事は、2007年に決して答えを得られなかったEclipseフォーラムでした! See Eclipse Community Forums

私は( "のjava.class.path" "")はSystem.getPropertyを使用して、私のODAドライバーからの出力にクラスパスをいくつかのコードを入れている

EDIT。

D:\ SOFTWARE \ Eclipseの\日食-SDK-3.7-win32の\日食\プラグイン\ org.eclipse.equinox.launcher_1.2.0.v20110502.jar

のEND EDIT

おかげ

Andez

答えて

2

すべての種類のソリューションを試した結果、私は最終的にそれをクラックしました。

BIRT CSV ODAドライバのインテグレーションと拡張の例に従えば、私はHibernateドライバがあることに気付きました。ソースはActuate Siteからダウンロードできます。

このドライバーは、別の方法で組み立てられました。ウィザードを使用してクラスパスを作成するときにクラスパスを操作するための設定がありました。残念ながら、私がダウンロードしたEclipse SDKのバージョン、Indigoではクラスパスを設定できませんでした。だから私は手動で行ってその違いを見ると思った。

これを行うには、Eclipse IDEでMANIFEST.MFを開くだけです。次のように

build.propertiesタブ

は/には、あなたが参照するすべてのjarファイルを含める:

source.odasentinel.jar = src/ 
output.odasentinel.jar = bin/ 
bin.includes = plugin.xml,\ 
      META-INF/,\ 
      odasentinel.jar,\ 
      lib/activation.jar\ 

...

MANIFEST.MF]タブを

Bundle-ClassPath設定を、元に戻すすべてのjarファイルを含むように設定します次のように入力します。

Bundle-ClassPath: odasentinel.jar, 
lib/activation.jar, 
lib/bsh-2.0b2.jar, 
lib/comm.jar, 

EclipseでODAドライバを実行してデバッグできるようになりました。

関連する問題