Sko*_*oky 51 android classnotfoundexception
我创建并发布了我的第一个Android应用程序.这很简单.它在模拟器和一些手机上工作正常,但我收到此错误:
java.lang.RuntimeException: Unable to instantiate application cz.teamnovak.droid.Novak ESC Track guide: java.lang.ClassNotFoundException: cz.teamnovak.droid.Novak ESC Track guide in loader dalvik.system.PathClassLoader[/data/app/cz.teamnovak.droid-1.apk]
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232)
at android.app.ActivityThread.access$3000(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: cz.teamnovak.droid.Novak ESC Track guide in loader dalvik.system.PathClassLoader[/data/app/cz.teamnovak.droid-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newApplication(Instrumentation.java:942)
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644)
... 11 more
Run Code Online (Sandbox Code Playgroud)
知道是什么原因引起的吗?
phr*_*ead 41
是的,我有同样的问题.这是因为我android:name在清单文件中的应用程序节点中指定了该属性.
你的Android Manifest文件可能看起来像这样:
<application
android:name="Novak ESC Track guide"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:description="@string/help_text" >
Run Code Online (Sandbox Code Playgroud)
android:name属性!除非您已实现自定义Application对象.该application:name属性与您的应用名称无关.这是要作为Application实例加载的特定类的名称.这就是为什么你会得到ClassNotFoundException如果该类不存在的原因.
android:label此同一应用程序节点上的属性.删除它,它应该工作:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:description="@string/help_text" >
Run Code Online (Sandbox Code Playgroud)
小智 14
当我将构建目标更改为3.2时,发生了类似的事情.在挖掘之后,我发现一个人将jar文件夹命名为"lib"而不是"libs".我刚刚将它重命名为libs并更新了Java构建路径上的引用,一切都恢复了.也许这会帮助别人......
小智 10
我们有几个项目在Android Market上不时记录此问题.我在清单中发现了以下问题:
如果包名是com.test,那么活动名称应该是.ActivityName(带有一个前导点),而不仅仅是ActivityName.
对于某些类,最常出现在日志中的类,类名被指定为com.test.Name应该的类.Name.
我想Android的许多实现都能成功处理这些小问题(这就是测试中从未发生异常的原因),而其他几个实例则抛出异常.
我有时在使用 eclipse 时会遇到这个问题。对我来说更正的方法是转到“项目属性/Android”并将构建目标 API 更改为不同的版本并重新发布。我会发现它已得到纠正,然后我可以将其更改回所需的构建目标。
或者
您可能需要检查您的proguard.cfg。
假设您已正确链接库,并且您的库项目具有标记为导出所需的代码,您可能需要执行的下一步是检查您的 proguard 设置并确保您没有删除所需的类。
在我让我的应用程序直接从 Eclipse 进入模拟器或设备后,我在这个问题上遇到了很大的困难。我遇到的问题是应用程序发布(即通过 proguard)并在设备上运行后,它缺少项目中包含的类。他们以某种方式被剥夺了。
我的问题可能是当我尝试使用 IntelliJ 并切换回 eclipse 时引起的。
这是对我有用的 proguard 文件:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembers class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
Run Code Online (Sandbox Code Playgroud)
有同样的错误:java.lang.RuntimeException:无法实例化活动(classnotfound)FIRST尝试更改构建平台(2.3.3 - > 2.2 - > 2.3.3)为我工作.
这是我对错误的观察.我最近将ADT更新为22.0.1.当我导入我之前的项目"E/AndroidRuntime(24807)时,我得到以下错误 :引起:java.lang.ClassNotFoundException:com.sherl.sherlockfragmentsapp.StartActivity in loader dalvik.system.PathClassLoader [/ data/app/com. sherl.sherlockfragmentsapp-1.apk]"
然后我按以下方式更改了"属性 - > Java构建路径 - >顺序和导出"[由于论坛规则无法添加图像]
它解决了这个问题.希望这能帮到你们.
好吧,你有一个 java.lang.ClassNotFoundException。这意味着应用程序运行时缺少一个类。您应该检查是否已将所有库添加到构建路径中。
右键单击您的项目 -> 属性 -> java 构建路径 -> 库,添加您的库或创建一个包含您的类的库,并为您的库启用顺序导出。
| 归档时间: |
|
| 查看次数: |
98825 次 |
| 最近记录: |