我有一个相当大的Android App项目,它引用了几个库项目.一切都很好,直到我将eclipse ADT插件升级到最新版本(v22).我当然也升级了SDK.我在eclipse中没有看到任何编译错误,但是当我在手机上运行项目时,我得到一个NoClassDefFoundError.
java.lang.NoClassDefFoundError: org.acra.ACRA
....
Run Code Online (Sandbox Code Playgroud)
方舟库包含在引用库中的项目(在libs文件夹)中的一个,我可以看到它在Package Explorer中的"Android的私人图书馆",也正如我所说的,没有编译错误.该项目在没有升级ADT的其他人的计算机上运行良好.
我已经尝试了很多东西,包括但不限于:
一切都没有成功,所以我在这里真的很绝望.
如果有人能给我一个如何解决这个问题的提示,我会很高兴.
这是关于在Eclipse中向Android项目添加第三方库(JAR)的两部分问题.
问题的第一部分是,当我尝试将第三方JAR(库)添加到我的Android项目时,我首先得到的问题是
解析XML时出错:未绑定前缀
因为我正在尝试使用该JAR中的一个类(并且需要以某种方式定义的前缀).这是怎么回事?
其次,(在解决之后 - 下面给出了答案),我的应用程序无法在Android上运行,我通过调试器(LogCat)发现我尝试使用的类不存在.
引起:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView ...
为什么,当我在Eclipse中没有编译或链接器错误时,它是否在模拟器上出现此问题?
这两个问题是修辞性的,我将在下面自己回答这些问题.这个论坛中的其他帖子可以解决问题,其他地方也有讨论,但我觉得我可以更明确地帮助下一个人来.
我目前正在开展一个项目,我必须使用纯粹的原生ndk.当我尝试从Irrlicht引擎源运行helloworld示例时,它工作正常.然后我尝试在我的项目中使用它,遵循该示例的相同格式.但我得到了:
03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]
Run Code Online (Sandbox Code Playgroud)
在运行我的项目时.
这是我的main.cpp文件:
#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}
Run Code Online (Sandbox Code Playgroud)
#万一
在Android.mk中:
LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include …Run Code Online (Sandbox Code Playgroud) 10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: …Run Code Online (Sandbox Code Playgroud) 我创建并发布了我的第一个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)
知道是什么原因引起的吗?
我的一个Android应用程序有大约100,000个用户,每周大约10次,我通过Google的市场工具向我报告以下异常:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.rebm.asp/org.rebm.asp.MainActivity}:
java.lang.ClassNotFoundException: org.rebm.asp.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/org.rebm.asp-1/pkg.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2753)
at android.app.ActivityThread.access$2500(ActivityThread.java:129)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2107)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4701)
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: org.rebm.asp.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/org.rebm.asp-1/pkg.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.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2651)
... 11 more
Run Code Online (Sandbox Code Playgroud)
从在线搜索,此错误通常表示清单文件和正在使用的包名称有问题.但是,我无法在自己的设备或模拟器上重现此错误.我只通过市场工具知道这个错误.我可以得出的结论是,这是一个罕见的错误,因为我知道很多人正在使用该应用程序,没有一个评论表明它崩溃了.
有谁知道问题可能是什么或我如何诊断它?
这一切都在标题中.虽然我看到<uses-sdk>在我见过的所有示例库项目中都有指定AndroidManifest.xml,但我觉得它是无关紧要的.
事实上,我怀疑<uses-permission>也是无关紧要的,因为都是的属性<manifest>,比其他package.
谁能确认一下?
编辑:此问题尚未在其他建议的SO问题中得到解决
我在市场上有一个完整的应用程序超过一年,很少有崩溃报告.最近我将我的应用程序更改为一个库,以便它可以包含在多个不同的"包装器"项目中.这样我就可以轻松制作不同版本 - 免费,付费,非谷歌市场,有/无应用内购买等.
新的"库+包装"应用似乎工作正常.我可以多次运行它,没有错误.但是后来一天之后(大概是操作系统关闭了部分或全部应用程序的活动)我尝试运行它并报告
Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass
Run Code Online (Sandbox Code Playgroud)
它找不到的类是程序启动时运行的第一个类,MyGameApplicationClass - 扩展Application.该类是库的一部分.
我怀疑两个清单文件中有一个是傻瓜.
包装器项目的清单包含行...
<application android:icon="@drawable/mygame_icon"
android:screenOrientation="portrait" android:label="My Game Name"
android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">
Run Code Online (Sandbox Code Playgroud)
什么想法可能会出错?
编辑:该库被引用为"正确的方式",由yorkw 对此SO问题的答案所定义.
编辑:我现在无法重复崩溃:-(我不知道当应用程序一两天不使用时操作系统会做什么.
说真的,我不知道如何解决这个问题.我的Android项目工作正常,直到我需要导入库使用Maven.因为,一切都开始崩溃.
正在发生的事情:当我开始我的应用程序,在logcat中出现以下错误和Android告诉我的应用程序停止工作.我搜索了这里这个类似的错误并在因特网上的其余部分,但一切人并没有为我工作.
错误:
了java.lang.RuntimeException:无法实例活动ComponentInfo {com.example.buscaserra/com.buscaserra.main.ActivitySplash}:抛出java.lang.ClassNotFoundException:未找到路径类 "com.buscaserra.main.ActivitySplash": DexPathList [zip文件 "/system/framework/com.google.android.maps.jar",zip文件"/data/app/com.example.buscaserra-2.apk"],nativeLibraryDirectories=[/data/app- lib/com.example.buscaserra-2,/ vendor/lib,/ system/lib]]
清单和包装:

构建路径:

拜托,我不知道自己还能做些什么.我的项目截止日期已近,我非常绝望.提前致谢.
02-28 01:49:27.741: E/AndroidRuntime(23024): FATAL EXCEPTION: main
02-28 01:49:27.741: E/AndroidRuntime(23024): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.appname.android/com.appname.android.ITCutiesReaderAppActivity}: java.lang.ClassNotFoundException: Didn't find class "com.appname.android.ITCutiesReaderAppActivity" on path: /data/app/com.appname.android-2.apk
02-28 01:49:27.741: E/AndroidRuntime(23024): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
02-28 01:49:27.741: E/AndroidRuntime(23024): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
...
02-28 01:49:27.741: E/AndroidRuntime(23024): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-28 01:49:27.741: E/AndroidRuntime(23024): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-28 01:49:27.741: E/AndroidRuntime(23024): at dalvik.system.NativeStart.main(Native Method)
02-28 01:49:27.741: E/AndroidRuntime(23024): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.appname.android.ITCutiesReaderAppActivity" on path: /data/app/com.appname.android-2.apk
02-28 01:49:27.741: E/AndroidRuntime(23024): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
02-28 01:49:27.741: E/AndroidRuntime(23024): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-28 01:49:27.741: E/AndroidRuntime(23024): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-28 01:49:27.741: …Run Code Online (Sandbox Code Playgroud)