3

私は Android アプリケーションを作成していますが、その中にはやや洗練された Java コードが含まれているため、Android 環境での正確性を検証するのは困難です。Android アプリケーションでこのコードを使用しながら、このコードの出力を調べるツールが他にもあるデスクトップ環境で、このコードを実行したいと考えています。

私が試みた解決策は、Eclipse に 3 つの異なるプロジェクトを用意することです。私の Android プロジェクトと 2 つのプレーンな (非 Android) Java プロジェクト。1 つの Java プロジェクトには、Android で使用したい洗練されたコードがあり、もう 1 つは前者のプロジェクトの正確性を検証するテスト プログラムです。後者のプロジェクトは、前者のデバッグに既に役立っています。

ただし、これまでのところ、Android プロジェクトで Java プロジェクトを使用しようとすると、IDE で機能するように見えますが、実際に Android アプリケーションを実行すると、いずれかのクラスにアクセスしようとすると常に NoClassDefFoundError 例外がスローされます。明らかに、そのコードは .dex ファイルに再コンパイルされていませんが、なぜですか?

これまでに行ったことについて詳しく説明することはできますが、私がしていることはかなり標準的で単純なことであり、見つけることができなくても、それを行うための簡単な方法があると思わずにはいられません。私が試みていることをかなりやっている人。誰かがこれがどのように行われるかを説明できますか?

4

2 に答える 2

1

幸いなことに、私は自分自身の質問に対する答えを見つけたので、同じ状況にある他の人を助けるためにここで共有したいと思いました. それは非常に単純であることが判明しました...

私がすでに行っていたことは通常は機能していたはずです。これは、以前に実際にこれを成功させたので、大きな手がかりになるはずです。Android プロジェクトのProperties > Java Build Path > Projectsでプレーンな Java プロジェクトを「Required projects on the build path」に追加し、 Properties > Java Build Path > Order and Exportでチェックボックスをオンにするだけです。 「ビルドクラスパスの順序とエクスポートされたエントリ」リストの同じプロジェクトのすべてがうまくいくはずです。

Eclipse 内から、このセットアップを機能させるために必要なことは他にありません。Java Jars をビルドしてライブラリとしてインポートする必要があるのは、コマンド ラインからコンパイルするときだけですが、私はそれを (まだ) 行っていません。

最後に、私の Android プロジェクトは JDK 1.6 でコンパイルされていましたが、たまたまプレーンな Java プロジェクトを JDK 1.7 準拠でコンパイルしていたため、これはうまくいきませんでした。これは、「 Dx bad class file magic (cafebabe) or version」を報告するコンソール ペインの出力によって確認されます。このエラー メッセージは、両方のプロジェクトが同じコンプライアンス レベルでコンパイルされ、偶然ではなく、Android プログラムが適切に実行されると消えます。

助けようとしたすべての人に感謝します。この回答が誰かの役に立てば幸いです。

于 2012-11-19T04:59:58.393 に答える
0

他のプレーンな Java プロジェクトを Android プロジェクトにし、それを使用してデバイスの出力を監視するとうまくいきませんか?

于 2012-11-07T00:25:03.633 に答える