我的Android进阶之旅------>Android项目运行报java.lang.NoClassDefFoundError错误的解决办法

简介:     今天在运行一个Android项目的时候,报了以下错误: D/AndroidRuntime( 3859): Shutting down VME/AndroidRuntime( 3859): FATAL EXCEPTION: mainE/AndroidRuntime( 3859): Process: com.

    今天在运行一个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

====================================================================================


    
相关文章
|
16天前
|
安全 Java 数据安全/隐私保护
在Java项目中集成单点登录(SSO)方案
在Java项目中集成单点登录(SSO)方案
|
2天前
|
Java 程序员 C++
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
|
3天前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
16 3
|
16天前
|
设计模式 Java 数据库连接
Java中的设计模式在实际项目中的应用
Java中的设计模式在实际项目中的应用
|
16天前
|
监控 Java Maven
使用AspectJ实现Java代码的运行时织入
使用AspectJ实现Java代码的运行时织入
|
16天前
|
SQL NoSQL Java
如何在Java项目中实现分布式锁
如何在Java项目中实现分布式锁
|
16天前
|
消息中间件 监控 Java
在Java项目中实现事件驱动架构
在Java项目中实现事件驱动架构
|
3天前
|
Java Unix Linux
Java跨平台运行的底层原理是什么
Java跨平台运行的底层原理是什么?
|
3天前
|
Java Docker 容器
Java的运行期内存占用为什么居高不下
Java的运行期内存占用为什么居高不下?
|
14天前
|
监控 Java
Java面试题:Java内存、多线程与并发工具包的深度探索,Java内存管理策略及其优化技巧,Java多线程并发控制的工具类与机制,Java并发工具包在实际项目中的应用
Java面试题:Java内存、多线程与并发工具包的深度探索,Java内存管理策略及其优化技巧,Java多线程并发控制的工具类与机制,Java并发工具包在实际项目中的应用
11 0