Android java.lang.RuntimeException错误

Android java.lang.RuntimeException错误,java,android,android-intent,Java,Android,Android Intent,我正在尝试为Unity构建我的Android插件。但当我这样做时,我会在Logcat中得到以下错误日志: 12-11 14:45:38.745: E/AndroidRuntime(26806): FATAL EXCEPTION: main 12-11 14:45:38.745: E/AndroidRuntime(26806): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.

我正在尝试为Unity构建我的Android插件。但当我这样做时,我会在Logcat中得到以下错误日志:

12-11 14:45:38.745: E/AndroidRuntime(26806): FATAL EXCEPTION: main
12-11 14:45:38.745: E/AndroidRuntime(26806): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.marc/com.example.marc.CompassActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.marc.CompassActivity" on path: DexPathList[[zip file "/data/app/com.example.marc-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.marc-1, /vendor/lib, /system/lib]]
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.os.Looper.loop(Looper.java:137)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread.main(ActivityThread.java:5103)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at java.lang.reflect.Method.invokeNative(Native Method)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at java.lang.reflect.Method.invoke(Method.java:525)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at dalvik.system.NativeStart.main(Native Method)
12-11 14:45:38.745: E/AndroidRuntime(26806): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.marc.CompassActivity" on path: DexPathList[[zip file "/data/app/com.example.marc-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.marc-1, /vendor/lib, /system/lib]]
12-11 14:45:38.745: E/AndroidRuntime(26806):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-11 14:45:38.745: E/AndroidRuntime(26806):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
12-11 14:45:38.745: E/AndroidRuntime(26806):    ... 11 more
我搜索了一下为什么会发生这种情况,我发现这是因为我的意图有问题。我需要将我的活动添加到清单文件中。但是,这是我的清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.marc"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="7" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity android:name="com.example.marc.CompassActivity"
        android:label="@string/app_name">
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
</application>
同样,按照我的想法,这是我应该传递给清单文件的内容,例如,它被称为“CompassActivity”。很明显,虽然我一定做错了什么,否则我就不会犯我现在犯的错误。有人能告诉我我做错了/错过了什么吗

编辑

最新的LogCat文件:

   12-11 16:32:16.957: E/AndroidRuntime(29055): FATAL EXCEPTION: main
12-11 16:32:16.957: E/AndroidRuntime(29055): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.marc/com.example.marc.CompassActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.marc.CompassActivity" on path: DexPathList[[zip file "/data/app/com.example.marc-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.marc-2, /vendor/lib, /system/lib]]
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.os.Looper.loop(Looper.java:137)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread.main(ActivityThread.java:5103)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at java.lang.reflect.Method.invokeNative(Native Method)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at java.lang.reflect.Method.invoke(Method.java:525)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at dalvik.system.NativeStart.main(Native Method)
12-11 16:32:16.957: E/AndroidRuntime(29055): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.marc.CompassActivity" on path: DexPathList[[zip file "/data/app/com.example.marc-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.marc-2, /vendor/lib, /system/lib]]
12-11 16:32:16.957: E/AndroidRuntime(29055):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-11 16:32:16.957: E/AndroidRuntime(29055):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
12-11 16:32:16.957: E/AndroidRuntime(29055):    ... 11 more

您的
unityplayerpactivity
类实际上未找到,但编译器显示为
CompassActivity
未找到

如果库中有UnityPlayerPractivity,并且它链接到您的应用程序,请仔细检查您的项目-->右键单击-->属性-->Java构建路径-->顺序和导出是否已检查您的项目。

 <activity android:name="com.example.marc.CompassActivity"

如果成功找到一个类,则会返回另一个类对象null,并在接收到null时抛出ClassNotFoundException,在这种情况下会发生这种情况


我认为主活动类在构建过程中被排除在外,或者它有一些不同于清单中提到的名称。

根据@TNR的回答-实际上找不到您的
UnityPlayerPractivity
类,但LogCat显示为
CompassActivity
未找到

您可以尝试做的是:

  • 使用清单中的原始UnityPlayerPractivity重新生成项目(仅用于测试)。它起作用了吗?(如果没有,则先解决此问题)

  • 使用JD反编译CompassActivity所在的JAR。它是否继承自UnityPlayerPractivity?在我的例子中,编译器出现了一个问题,它将继承更改为未找到的NPUnityPlayerPractivity。如果出现此问题,则需要重新编译代码并确保继承正确


  • 祝你好运

    你有没有试着把这个项目清理干净?我刚做了。然而,我正在通过Unity构建上述插件,并且我已经打开了eclipse,这就是我获取logs.lol的方式@塞尔文……我错了。。。我把活动名作为唯一的类名(开始时没有任何句点),它每次都有效。我应该在回答之前尝试复制错误。但是stacktrace给我的印象是这是可能的issue@selvin如果您看到错误消息“由以下原因引起:java.lang.ClassNotFoundException:未找到类”com.example.marc.CompassActivity“”,您对此有何看法?请尝试,但我还是收到了同样的消息。@N0xus..你能在评论中添加新的stacktrace吗?我已检查并添加了我的classes.jar文件,该文件位于Unity\Editor\Data\PlaybackEngines\androidplayer\bin中。这是什么意思?正如我在回答中所说的,请检查Android私有依赖项是否按顺序检查并导出。
     <activity android:name="com.example.marc.CompassActivity"
    
       <activity android:name="CompassActivity"