【发布时间】:2018-05-28 02:53:07
【问题描述】:
我已从 Mac 移至 linux 机器 (ubuntu),但无法运行之前的项目。该项目有大约 10 个模块,它在我的 macbook 上仍然可以正常工作,但是在 ubuntu 上构建时(在 17.10 上尝试了 2 次全新安装,在 16.04 上也尝试了 2 次)会在启动时崩溃应用程序并出现以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application com.xxx.xxx.Application: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.Application" on path: DexPathList[[zip file "/data/app/com.xxx.xxx.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx.debug-1/lib/arm, /data/app/com.xxx.xxx.debug-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:802)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5418)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1558)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.Application" on path: DexPathList[[zip file "/data/app/com.xxx.xxx.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx.debug-1/lib/arm, /data/app/com.xxx.xxx.debug-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newApplication(Instrumentation.java:1014)
at android.app.LoadedApk.makeApplication(LoadedApk.java:796)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5418)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1558)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
我已经尝试在两个操作系统(17.10 和 16.04)上清理、重建、失效和重新启动 3 个不同的 android studio 版本(稳定版本、2.3 和最新的金丝雀版本),但我仍然得到完全相同的错误。另外,我已经安装了 64 位系统的库。另外,我也尝试过使用 oracle java。
有没有人知道为什么一个项目在 linux 上会出现这个错误,而在 mac 上却没有?
更新
所以我发现 Ubuntu 看不到应用程序类。它带有红色标签,无法从清单文件中识别。这是来自app 包的应用程序类,只有切换到项目视图才能看到它。我目前正在调查为什么它看不到它。
【问题讨论】:
-
平台镜像安装正确吗?堆栈跟踪显示与
armeabi-v7a相关的内容。你能确定那些系统镜像已经安装了吗 -
在所有用例中,我都可以启动 hello world 应用程序,一切都很好。如果这回答了问题
-
查看日志,我想问题出在您的某些库或构建路径上,它们指向您的旧路径,因此 android 无法找到它。看看这些问题,也许它们会对你有所帮助。 stackoverflow.com/questions/22399572/…stackoverflow.com/questions/10866431/…
-
我也想过这个问题。但也有超过 7 名开发人员在从事这个项目,而且一切对他们来说都很好。它们也都在 osx 上。
-
@Umair 我刚刚更新了问题,提供了有关该问题的更多详细信息。