1

Android アプリケーションに永続性モジュールを提供するために OrmliteSqliteOpenHelper を拡張するクラスがあります。問題は、Eclipse のテスト プロジェクトからこのクラスにアクセスするたびに、NoClassDefFound 例外がスローされることです。パッケージがインポートされているため、ソース コードは問題ないように見えますが、何か問題が発生する可能性があることを示す Eclipse の強調表示はありません。

テスト プロジェクトからアクセスすると、プロジェクト内の他のすべてが正常に動作するだけでなく、このファイルをテスト プロジェクトの出来上がりに移動すると、完全に動作します。問題は、他のコンポーネントがそれを呼び出すために、実際のプロジェクトにある必要があることです。誰かがこのエラーに遭遇したことがありますか、または私がどこで間違っているのか考えていますか?

他のすべてのクラスが機能するため、クラス パスは正しく設定され、テスト プロジェクトには常にメイン プロジェクトがクラス パスに追加されます。また、OrmliteSqliteOpenHelper オブジェクトを内部クラスに移動しようとしました。これにより、外部クラスを表示して操作できるようになりましたが、内部クラスをインスタンス化しようとするとすぐに同じエラーが発生します。また、このファイルを同じパッケージ内の両方のプロジェクトにコピーすると、メイン プロジェクト内の何かがこのクラスにアクセスしようとするたびに、「検証済みクラスのクラス参照が予期しない実装に解決されました」というエラーが発生します。明らかに、2 つのプロジェクト間でクラスのコンパイル/処理方法に違いがあります。

私はかなり困惑しています:/ 助けてくれてありがとう!

4

2 に答える 2

0

皆さん、私はこの問題の解決策をハックしたようです。メイン プロジェクトの 'src' フォルダー全体をテスト プロジェクトのフォルダーにリンクしました。これで、ファイルが配置されている特定のパッケージを検索するときに、最初に独自のソース ツリーでファイルが検索されます。万歳!

なぜこれが機能するのですか?私には手がかりがありません、おそらく誰かがその事実を私たちに教えてくれるでしょう.
それは機能しますか?今のところ...

于 2010-11-27T05:54:37.497 に答える
0

問題を解決する方法があります:

  • テスト プロジェクトの Build Path から OrmLite を削除します。
  • それらをメイン プロジェクトからエクスポートします。
于 2011-04-21T13:05:42.197 に答える