18

私は、Google Android の開発に eclipse を使用しています。

[x] Is Library外部jarファイル(参照ライブラリ)を含むライブラリプロジェクト(Android設定内)を作成しました。このライブラリ プロジェクトは、別のプロジェクト (ライブラリ プロジェクトを使用する実際のプロジェクト) で参照されています。これは、Android 設定の下にプロジェクトを追加することによって行われます。

ソースはコンパイルされますが、デバイスで実行したい場合、ライブラリ プロジェクトに含まれる jar ファイル内にあるクラスに対して NoClassDefFoundError が発生します。

編集: jarファイルがエクスポートされたエントリに追加されます(ライブラリプロジェクト[x] my.jarOrder and Export-Tab で)

これを機能させるためのきれいな方法はありますか?

4

7 に答える 7

15

ここの公式APIで明確に述べられています:

ライブラリ プロジェクトには JAR ライブラリを含めることができます

JAR ライブラリを含むライブラリ プロジェクトを開発できますが、依存アプリケーション プロジェクトのビルド パスを手動で編集し、JAR ファイルへのパスを追加する必要があります。

jar lib は、ライブラリ プロジェクトのビルド パス自体だけでなく、依存アプリケーション プロジェクトのビルド パスに手動で追加する必要があります。

SDK r17 からの更新:

これは現在、ADT によって自動的に処理されます。ADT 17.0.0 リリースの新機能については、こちらをご覧ください。

JAR 依存関係を自動的にセットアップする機能が追加されました。/libs フォルダー内のすべての .jar ファイルがビルド構成に追加されます (Ant ビルド システムの動作と同様)。また、ライブラリ プロジェクトに必要な .jar ファイルも、それらのライブラリ プロジェクトに依存するプロジェクトに自動的に追加されます。(詳細)

于 2011-11-03T20:26:59.303 に答える
7

手順を実行し(「注文とエクスポート」のプロジェクトを確認しても)、API 17にjava.lang.ClassNotFoundExceptionが残っている場合、最後の手順は、コンパイラがJava1.7で実行されていないことを確認することです。が1.7の場合、すべてのプロジェクトで1.6に変更する必要があります。その後、すべてのプロジェクトを再構築するように求められ、私の電話で正常に実行されました:)

EclipseでJavaコンパイルのバージョンを変更するには、次の場所にあります。プロジェクトのプロパティ> Javaコンパイラ>コンパイラコンプライアンスレベル:1.6

于 2013-01-02T01:16:38.687 に答える
2

に行くproject properties -> build path-> libraies

このようなjarファイルが表示された場合

snmp4j.jar - e:\software\jars

それはあなたの問題かもしれません

プロジェクトに libs フォルダーを追加し、そのフォルダーに jar ファイルをコピーします。jar ファイルを右クリックして移動しbuild path -> add to build pathます。次に、jarを次のように見ることができます

snmp4j.jar  - project_name/libs 

それは私のために働いた。

于 2012-10-09T09:08:45.370 に答える
2

同じライブラリを使用する 2 つのプロジェクトがありましたjava.lang.NoClassDefFoundError。他に何も役に立たなかったのでproject.properties、プロジェクトのルート ディレクトリにあるファイルを調べました。作業中のプロジェクトには次のandroid.library.reference行 (下の最後の行) がありましたが、クラッシュしたプロジェクトにはありませんでした:

# Project target.
target=android-17
android.library.reference.1=../my-library-project

手動で行を追加したところ、機能し始めました! (はい、両方の(プロジェクト) プロパティを試しました -- Java ビルド パス -- プロジェクト(プロジェクト) プロパティ -- Java ビルド パス -- 注文とエクスポート-- 何も役に立ちませんでした。)

PSちなみに、「プロジェクト プロパティ」には「プロジェクト参照」タブもあります。それが機能するかどうかはわかりません。

于 2013-04-08T11:38:19.207 に答える
1

ADT17 にアップグレードしたときに、ライブラリが適切にインポートされない小さな問題がありました。これは、私のライブラリが libs ではなく lib フォルダからの依存関係としてリンクされていたためです。

ライブラリは今からlibsフォルダにある必要があるようです

于 2012-04-06T17:06:13.703 に答える
0

注意すべきもう1つのことは、ライブラリパッケージ名です。

ADT21を使用していて、同じパッケージ名のライブラリがある場合、コンパイル中にエラーが発生しますが、Eclipseでコンパイルおよび実行され、一部のリソースクラスが欠落しているAPKが発生します。したがって、アプリを実行するとクラッシュします。

ANTを使用してコンパイルすると、2つ以上のライブラリが同じパッケージ名を使用しているというコンパイルエラーが表示されます。

これを修正するには、Androidツール->アプリケーションパッケージの名前変更を使用してライブラリプロジェクトの名前を変更します。その後、すべてが正常に戻ります。

これを理解するのにほぼ一日かかりました...

于 2013-02-11T05:16:56.177 に答える