3

同じカテゴリの問題を 100 ほど読みましたが、役に立ちませんでした。動作するアプリケーションがあり、パッケージ名をリファクタリングし、コンパイルして実行しました。1 週間後、作業に戻り、起動時に ClassNotFoundException が発生しました。さらに悪いことに、リポジトリから以前のコミットをチェックアウトすると (リファクタリングの前に、すべてが機能していた)、そのプロジェクトは起動時に同じエラーを発生させます (別のパッケージ名を除く)。

考えられることはすべて試しましたが、問題を追跡する方法がわかりません。私は明らかなことをしました:プロジェクトをきれいにし、完全に削除してから再度追加し、新しいデバイスで実行します...

どのコードがデバッグに役立つかはわかりませんが、マニフェストの宣言と logcat の出力は次のとおりです。他に役立つことがあれば教えてください。私はここで本当に迷っています。

クラッシュ:

E/AndroidRuntime(  515): FATAL EXCEPTION: main
E/AndroidRuntime(  515): java.lang.RuntimeException: Unable to instantiate service
co.mosic.mosic.CommunicationService: java.lang.ClassNotFoundException: co.mosic.mosic.CommunicationService
E/AndroidRuntime(  515):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2237)
E/AndroidRuntime(  515):    at android.app.ActivityThread.access$1600(ActivityThread.java:123)
E/AndroidRuntime(  515):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
E/AndroidRuntime(  515):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  515):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(  515):    at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime(  515):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  515):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(  515):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(  515):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(  515):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  515): Caused by: java.lang.ClassNotFoundException: co.mosic.mosic.CommunicationService
E/AndroidRuntime(  515):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime(  515):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime(  515):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime(  515):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2234)
E/AndroidRuntime(  515):    ... 10 more

マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="co.mosic.mosic"
    android:versionCode="1"
    android:versionName="1.0" >

...

<service 
    android:name=".CommunicationService" >
    <intent-filter>
        <action android:name="co.mosic.mosic.MStcServiceInet" /> 
    </intent-filter>
</service>
4

2 に答える 2

4

最近の ADT プラグインの更新により、ライブラリ フォルダを lib ではなく「libs」に変更する必要がありました。最近何度か遭遇しました。

于 2012-05-15T09:37:34.250 に答える
0

私の頭の中で、このタイプのエラーの最も一般的な原因は、proguard.flagsファイルがないことです。

Proguardはコード上で実行され、すべての名前を難読化します。サービスクラスにフラグを指定していない場合-keep、その名前も変更されるため、OSはフラグを見つけることができません。

したがって、適切なproguard構成ファイルをコミットするのを忘れたと思います。これは、以前は機能していたのに現在は機能していない理由を説明しています。

于 2012-05-13T03:08:57.343 に答える