今天在运行一个Android项目的时候,报了以下错误:
D/AndroidRuntime( 3859): Shutting down VM E/AndroidRuntime( 3859): FATAL EXCEPTION: main E/AndroidRuntime( 3859): Process: com.runbo.outdoormeter, PID: 3859 E/AndroidRuntime( 3859): java.lang.NoClassDefFoundError: com.runbo.outdoormeter.LocationApplication$MyLocationListenner E/AndroidRuntime( 3859): at com.runbo.outdoormeter.LocationApplication.<init>(LocationApplication.java:23) E/AndroidRuntime( 3859): at java.lang.Class.newInstanceImpl(Native Method) E/AndroidRuntime( 3859): at java.lang.Class.newInstance(Class.java:1215) E/AndroidRuntime( 3859): at android.app.Instrumentation.newApplication(Instrumentation.java:990) E/AndroidRuntime( 3859): at android.app.Instrumentation.newApplication(Instrumentation.java:975) E/AndroidRuntime( 3859): at android.app.LoadedApk.makeApplication(LoadedApk.java:502) E/AndroidRuntime( 3859): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4537) E/AndroidRuntime( 3859): at android.app.ActivityThread.access$1500(ActivityThread.java:151) E/AndroidRuntime( 3859): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402) E/AndroidRuntime( 3859): at android.os.Handler.dispatchMessage(Handler.java:110) E/AndroidRuntime( 3859): at android.os.Looper.loop(Looper.java:193) E/AndroidRuntime( 3859): at android.app.ActivityThread.main(ActivityThread.java:5322) E/AndroidRuntime( 3859): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 3859): at java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime( 3859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) E/AndroidRuntime( 3859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) E/AndroidRuntime( 3859): at dalvik.system.NativeStart.main(Native Method)
我就纳闷了,因为此项目我丢在Android系统源代码中去编译,完全正常运行不报错。导入到Eclipse中调试程序就直接给我报这错误,坑爹啊。而这个MyLocationListenner是继承百度SDK中的
com.baidu.location.BDLocationListener类,想来想去都想不出这错误报的所以然来。
而且在Eclipse视图中,完全没有任何提示说有错误,只是运行此APP就报错。如下图所示:
后来终于找到了解决方法,原来我丢在源代码中去编译的时候,Android.mk文件中,将这个jar包都加入进去了,都加载了所以不会报错。部分代码如下:
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := JAR_1:lib/android-support-v4.jar \ JAR_2:lib/locSDK_3.3.jar
解决方法如下所示:
1.项目根目录下新建一个libs文件夹
2.把要加的包放到这个目录下
3.右键 Build Path-> Use as source folder
4.在jar包上右键->add to build path
(注意,上面的是libs,不是lib)
如下图所示:
好了,问题解决,需要注意的地方就是这样。
====================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================