代码之家  ›  专栏  ›  技术社区  ›  Simon Lemoine

尝试构建现有Xamarin项目时发生ClassNotFoundException[重复]

  •  -1
  • Simon Lemoine  · 技术社区  · 7 年前

    我已经收到了一个现有的Xamarin项目,在发布之前,我需要对其进行处理。

    我尝试在两种不同的设备上安装它:

    • Nexus 5,运行Android 6.0(API 23)
    • Emulator Android 4.4(API 19)-通过Visual Studio Emulator for Android进行仿真

    然而,每次我这样做时,它都会在启动时崩溃 java.lang.classNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" (下面是完整的堆栈跟踪) (ConnectScreen是我的主启动器)

    我尝试过的事情:

    • 删除bin/obj文件夹并重建
    • 清理项目并重建
    • 终止MSBuild进程,清理并重建

    经过研究,我发现 Classy-Shark ,它允许我在 .apk 文件 由此看来,ConnectScreen似乎未在包中编译 md515fc9a7f42ec11c09d24b1c1a9770737 (应用程序正在查找)但是 md5bc065f6c935f653292ddf7352d29f8ad . 我觉得这不对吗?

    (每次我构建项目时,这两个包都会发生变化)

    我曾尝试构建一个新项目(跨平台应用程序、本机、主细节、.NET标准),该项目在我的Nexus 5上运行良好,所以我不认为这是因为我的手机或Visual Studio版本?

    我尝试过更改MultiDex设置以及TargetFramework,但仍然遇到同样的问题。

    以下是完整的堆栈跟踪:

    Unhandled Exception:
    
    Java.Lang.RuntimeException: Unable to instantiate activity ComponentInfo{MyApp.MyApp/md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen}: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]
    
    12-22 10:39:51.537 E/AndroidRuntime( 1255): FATAL EXCEPTION: main
    12-22 10:39:51.537 E/AndroidRuntime( 1255): Process: MyApp.MyApp, PID: 1255
    12-22 10:39:51.537 E/AndroidRuntime( 1255): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{MyApp.MyApp/md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen}: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.os.Handler.dispatchMessage(Handler.java:102)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.os.Looper.loop(Looper.java:136)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.main(ActivityThread.java:5001)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.reflect.Method.invokeNative(Native Method)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.reflect.Method.invoke(Method.java:515)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at dalvik.system.NativeStart.main(Native Method)
    12-22 10:39:51.537 E/AndroidRuntime( 1255): Caused by: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)
    12-22 10:39:51.537 E/AndroidRuntime( 1255):     ... 11 more
    12-22 10:39:53.137 I/Process ( 1255): Sending signal. PID: 1255 SIG: 9
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Simon Lemoine    7 年前

    事实证明,这似乎是Visual Studio 2017(15.5)最新版本的一个bug。

    在将Visual Studio降级到15.0之后,它似乎工作得很好。

    这只是一个暂时的解决方案,但我希望它可能会帮助其他人。