1

現在、バージョン4.6.1(Windows Vista + Eclipse)を使用して単体テストプロジェクトを作成しています。私のプロジェクトは3つの部分に分かれています。

  • A.ユニットテストアプリケーション(タイプ:CLDCアプリケーション)
  • B.テストするアプリケーション(タイプ:CLDCアプリケーション)
  • C.ライブラリプロジェクト(タイプ:ライブラリ、.jarファイルはインポートされません)

Aプロジェクトは、B(そしてもちろんCでも)に存在するコードを参照する必要があります。プロジェクトB(Cを参照)を問題なく実行できることを指定したいと思います。プロジェクトAを実行しようとすると、問題が発生します。

次の操作を実行しました。

BプロジェクトタイプをCLDCアプリケーションからライブラリBに変更すると、プロジェクトCが参照されます。AはプロジェクトBを参照し、すべてのプロジェクトを「Active forBlackberry」として設定します。基本的に、Aは他の2つのプロジェクトを2つのネストされたライブラリと見なします。コードは正常にビルドされますが、問題は、実行中にCライブラリのクラスがBによって呼び出されると、次の例外がスローされることです。

NoClassDefFoundError

詳細メッセージはありません

どんな助けでも本当にありがたいです。

どうもありがとう

4

1 に答える 1

3

NoClassDefFoundError は、実行時に A が C を見つけられないことを意味します。通常の原因は、C がターゲット デバイス (シミュレータまたは実デバイス) に展開されなかったことです。

解決策 1:

Project->Properties->Java Build Path の下のプロジェクト A の場合、C (ライブラリ プロジェクト) が [Projects] の下にリストされ、[Order and export] タブで対応するチェックボックスがオンになっていることを確認します。これにより、ビルドおよびデプロイ プロセス中にライブラリが確実にエクスポートされます。

解決策 2:

プロジェクト A で、ライブラリ C ソースへのシンボリック リンクを追加します (右クリック プロジェクト -> ビルド パス -> リンク ソース)。これにより、プロジェクト A のビルド時にライブラリのソース コードが強制的にインクルードされます。

于 2011-12-04T22:50:05.127 に答える