6

今日、Android プログラムの作業中に問題が発生しました。XML文字列をJavaオブジェクト(サードパーティ)に変換するクラスがあり、通常のJavaプロジェクトとして正常に動作しますが、Androidでは次の奇妙なエラーが発生します:

06-21 22:44:26.402: DEBUG/App(259): java.lang.ClassNotFoundException: ローダー dalvik.system.PathClassLoader@4001b500 の com.package.mycode.Class
06-21 22:44:26.402: デバッグ/アプリ (259): dalvik.system.PathClassLoader.findClass (PathClassLoader.java:243) で

明らかな理由でアプリケーション名とパッケージを非表示にしていますが、このような問題に遭遇したことがある人がいるかどうか疑問に思っていました。クラスは、私が追加したライブラリである正しいパッケージに含まれています。以前に参照した他のクラスがあり、それらを作成できます。ClassNotFoundExceptionaがスローされる他の理由はありますか?

ありがとう、ジェイク

4

6 に答える 6

9
private static void fixClassLoaderIssue()
{
    ClassLoader myClassLoader = MyClass.class.getClassLoader();
    Thread.currentThread().setContextClassLoader(myClassLoader);
}

これは私が現在持っているコードで、この問題を解決したと信じています。MyClass は、私のプロジェクトにある単なるクラスです。私が言ったように、同僚が私にそれを見せてくれましたが、それはかなり簡単に見えます.

于 2011-02-04T18:22:12.507 に答える
0

ClassNotFoundExceptionがスローされる他の理由はありますか?

IIRC、「com.package.mycode.Class」の静的依存関係にある他のクラスをロードできない場合、または静的初期化中に問題が発生した場合にもスローされる可能性があります。ただし、これらはネストされた例外として表示されるはずです...初めてクラスをロードしようとしたとき

于 2010-06-22T03:19:53.203 に答える
0

Androidアプリの場合、外部jarファイルでも同じ問題が発生します。私の場合、解決策はjarを「lib」フォルダーからandroidのデフォルトの「libs」フォルダーに移動することでした。

jarがlibフォルダーにある場合(ビルドパスにも追加されました)、Eclipseにはビルドの問題はありませんでしたが、アプリは実行時にClassNotFoundExceptionを発生させていました。jarを「libs」フォルダーに移動すると、jarが「AndroidDependencies」の下に表示され始め、アプリが正常に動作し始めました。

これらは、同じトピックに関する他の議論の一部です。

ライブラリ/JARをEclipseAndroidプロジェクトに追加する

Android:jarファイル(LIBまたはLIBS)のフォルダー名は何ですか?

Androidで生成されたantビルドファイルを使用するときにJARのlibフォルダーを指定するにはどうすればよいですか?

于 2012-05-16T10:34:54.143 に答える
0

Androidには、通常のマシンで使用できるすべてのJavaクラスが用意されているわけではありません。このエラーを引き起こす可能性のあるいくつかのクラスが欠落しています。ただし、これはコンパイル時にすでに表示されているはずです。このリストを見て、サポートされているクラスとサポートされていないクラスを確認してください。

繰り返しますが、コンパイラが欠落しているクラスを確認する必要があるため、推測しているだけです。

于 2010-06-22T06:52:49.783 に答える
0

aynctask の開始に問題がありました。以前は問題なく動作していましたが、追加しました

line = StringEscapeUtils.unescapeHtml4(line);

(commons.apache.org ライブラリ) を asynctask に追加すると、多くの問題が発生します。コンパイルは問題ありませんが、実行しようとすると、asynctask クラスにクラスが見つからないと言われました。しかし、再開を押すと、非同期タスクで続行し、その後終了しました。

問題は StringEscapeUtils が正しくインストールされていないことだと思いますが、取得したエラーメッセージからそれを理解する方法がありませんでした。

于 2013-02-16T03:35:15.007 に答える