4

Android アプリケーション プロジェクト (A) と Android ライブラリ プロジェクト (L) があります。A は L をライブラリとして使用します。

ライブラリ プロジェクトである L は、いくつかの外部ライブラリを既に使用しています。これらのライブラリとそれらを呼び出すコードはすべて完全に正常に動作し、しばらくの間正常に動作しています。

ただし、最近、もう 1 つのライブラリを追加しました。Apache Commons IO 2.4 です。現在、ライブラリ コード (L) が Commons IO のメソッドを呼び出そうとすると、アプリケーションがクラッシュします。

他のすべての外部ライブラリを追加したのとまったく同じ方法で、IO ライブラリを追加しました。ビルドパス

私のアプリケーションが最初に起動すると、次のようになります。

11-01 12:32:14.243: I/dalvikvm(3815): Could not find method org.apache.commons.io.FileUtils.copyInputStreamToFile, referenced from method au.com.grdc.alib.helpers.LibraryCommon.download
11-01 12:32:14.243: W/dalvikvm(3815): VFY: unable to resolve static method 7039: Lorg/apache/commons/io/FileUtils;.copyInputStreamToFile (Ljava/io/InputStream;Ljava/io/File;)V

後で私は得る:

11-01 14:50:48.913: E/AndroidRuntime(10030): FATAL EXCEPTION: AsyncTask #1
11-01 14:50:48.913: E/AndroidRuntime(10030): java.lang.RuntimeException: An error occured while executing doInBackground()
...
11-01 12:35:10.268: E/AndroidRuntime(4493): Caused by: java.lang.NoClassDefFoundError: org.apache.commons.io.FileUtils
11-01 12:35:10.268: E/AndroidRuntime(4493):     at au.com.grdc.alib.helpers.LibraryCommon.download(LibraryCommon.java:89)

「lib」フォルダーの名前を「libs」に変更することが推奨されていることがわかりました。これは実行しましたが、問題は解決していません。

また、外部ライブラリをエクスポートするようにマークする推奨事項も見ました。これも実行しましたが、問題は修正されていません。

4

2 に答える 2

5
  1. eclipse-android-plugin と android-tools を更新します (ライブラリの処理方法が少し前に変更されました)。
  2. プロジェクトに「libs」(「lib」ではない)フォルダーがあることを確認してください。
  3. すべてのライブラリ jar を「libs」フォルダーに入れます。
  4. 「libs」フォルダー内のライブラリ jar が、プレーン Java プロジェクトの場合のようにビルド パスに追加されていないことを確認してください。Android はそれらを自動的に追加します。[プロジェクト] > [プロパティ] > [Java ビルド パス] > [ライブラリ] を見ると:
    1. 最上位にライブラリ jar が 1 つも表示されていないことを確認します (それ以外の場合は削除します)。
    2. 「Android Dependencies」という自動作成された最上位の依存関係グループがあることを確認します。
    3. libs フォルダーのすべての jar ファイルが「Android Dependencies」グループに自動的に追加されていることを確認します。

(A) と (L) の両方に対して上記の手順を実行します。

また、(A) が (L) に対してプレーン Java スタイルのプロジェクト依存関係を持たないことを確認します。[プロジェクト] > [プロパティ] > [Java ビルド パス] > (A) のプロジェクトは (L) をリストしないでください。それ以外の場合は削除します。

[プロジェクト] > [プロパティ] > [Android] for (A) が [ライブラリ] セクションのプロジェクト (L) にリストされていることを確認し、そうでない場合は追加します。

于 2012-11-05T00:01:56.420 に答える
0

org.apache.commons.io.FileUtils が複数の jar に存在し、JVM がどの jar を使用するかを解決できない可能性があります.それをクロスチェックできますか?

于 2012-11-01T04:47:20.390 に答える