热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidStudio中运行时的.jar库的NoClassDefFoundError

如何解决《AndroidStudio中运行时的.jar库的NoClassDefFoundError》经验,为你挑选了1个好方法。

嗨朋友在Stack Overflow

我最近在Android应用中实施Fiksu SDK时遇到了问题.简短的介绍,Fiksu SDK是一个注册安装和事件的营销工具.与Fiksu相关的所有方法都在名为"ASOTracking.jar"的.jar文件中

问题:

库已正确设置,Gradle在项目编译时没有报告错误,我甚至可以调试apk.但是,它在尝试初始化SDK时会在运行时抛出"java.lang.NoClassDefFoundError".


日志:

01-27 14:06:54.801  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.getClientId
01-27 14:06:54.801  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;
01-27 14:06:54.801  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x0000
01-27 14:06:54.806  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuConfigurationManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.initialize
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13733: Lcom/fiksu/asotracking/FiksuConfigurationManager;.getInstance ()Lcom/fiksu/asotracking/FiksuConfigurationManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x000f
01-27 14:06:54.806  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.isAppTrackingEnabled
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x0000
01-27 14:06:54.806  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setAppTrackingEnabled
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x0010
01-27 14:06:54.806  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setClientId
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x0010
01-27 14:06:54.806  31166-31166/com.example.myapp I/dalvikvm? Could not find method com.fiksu.asotracking.FiksuConfigurationManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setDebugModeEnabled
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve static method 13733: Lcom/fiksu/asotracking/FiksuConfigurationManager;.getInstance ()Lcom/fiksu/asotracking/FiksuConfigurationManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x71 at 0x0001
01-27 14:06:54.806  31166-31166/com.example.myapp E/dalvikvm? Could not find class 'com.fiksu.asotracking.CustomEventTracker', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadCustomEvent
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve new-instance 2112 (Lcom/fiksu/asotracking/CustomEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x22 at 0x000f
01-27 14:06:54.806  31166-31166/com.example.myapp E/dalvikvm? Could not find class 'com.fiksu.asotracking.PurchaseEventTracker', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadPurchase
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve new-instance 2125 (Lcom/fiksu/asotracking/PurchaseEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x22 at 0x0022
01-27 14:06:54.806  31166-31166/com.example.myapp E/dalvikvm? Could not find class 'com.fiksu.asotracking.PurchaseEventTracker', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadPurchaseEvent
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve new-instance 2125 (Lcom/fiksu/asotracking/PurchaseEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x22 at 0x0014
01-27 14:06:54.806  31166-31166/com.example.myapp E/dalvikvm? Could not find class 'com.fiksu.asotracking.RegistrationEventTracker', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadRegistration
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve new-instance 2126 (Lcom/fiksu/asotracking/RegistrationEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x22 at 0x001e
01-27 14:06:54.806  31166-31166/com.example.myapp E/dalvikvm? Could not find class 'com.fiksu.asotracking.RegistrationEventTracker', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadRegistrationEvent
01-27 14:06:54.806  31166-31166/com.example.myapp W/dalvikvm? VFY: unable to resolve new-instance 2126 (Lcom/fiksu/asotracking/RegistrationEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager;
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? VFY: replacing opcode 0x22 at 0x0010
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35ce at 0x2b in Lcom/fiksu/asotracking/FiksuTrackingManager;.initialize
01-27 14:06:54.806  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35c5 at 0x2e in Lcom/fiksu/asotracking/FiksuTrackingManager;.initialize
01-27 14:06:54.811  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x359b at 0x15 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadCustomEvent
01-27 14:06:54.811  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35cf at 0x30 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadPurchase
01-27 14:06:54.811  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35cf at 0x23 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadPurchaseEvent
01-27 14:06:54.811  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35d1 at 0x26 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistration
01-27 14:06:54.811  31166-31166/com.example.myapp I/dalvikvm? DexOpt: unable to optimize static field ref 0x1507 at 0x16 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistrationEvent
01-27 14:06:54.811  31166-31166/com.example.myapp D/dalvikvm? DexOpt: unable to opt direct call 0x35d1 at 0x19 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistrationEvent
01-27 14:06:54.811  31166-31166/com.example.myapp D/AndroidRuntime? Shutting down VM
01-27 14:06:54.811  31166-31166/com.example.myapp W/dalvikvm? threadid=1: thread exiting with uncaught exception (group=0x41ecb700)
01-27 14:06:54.821  31166-31166/com.example.myapp E/AndroidRuntime? FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.fiksu.asotracking.FiksuConfigurationManager
            at com.fiksu.asotracking.FiksuTrackingManager.initialize(FiksuTrackingManager.java:83)
            at com.example.userinterface.MyApplication.onCreate(MyApplication.java:56)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4684)
            at android.app.ActivityThread.access$1400(ActivityThread.java:159)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
            at dalvik.system.NativeStart.main(Native Method)

我的当地环境:

    Project是在Android Studio上开发的

    我正在使用Mac OS X 10.8.5 Mountain Lion

    compileSdkVersion 21,buildToolsVersion"21.1.2",gradleVersion ='2.2.1',com.android.tools.build:grad:1.0.0

    这是一个多模块项目.应用程序模块调用"userInterface"库模块,此SDK位于此库模块中.


我尝试过的:

    我确保SDK(jar)文件已正确设置,并且Gradle没有报告编译错误

    我确保在调用SDK方法的地方没有语法错误

    我检查了调用此SDK的模块的依赖关系,以确保没有依赖性问题.我走得太远了,我甚至修剪了整个依赖树(我知道这是不必要的).

    我尝试删除所有模块的"build"目录并重建整个项目

    我在Android Studio中执行了"Invalidate Cache/Restart"操作

    我在根目录和应用程序模块目录中通过Terminal执行了"./gradlew clean"命令.

    我在STO咨询了以下链接但没有成功:

Android Studio - 导入外部库/ Jar

Android Studio:将jar添加为库?

Android studio Gradle无法找到方法compile()

得到"引起:java.lang.VerifyError:"

无法在Android库文件中找到类

Android Studio中包含库的NoClassDefFoundError


最后的想法:

我需要一些认真的帮助,因为我已经尝试了我所知道的一切.在从Eclipse迁移此项目之前,此SDK工作正常.现在,它在Android Studio中运行时抛出奇怪的异常.

最后一件事有点可疑--- Android Studio中的类路径文件(***.imi文件),我重新安排了其中的类路径条目,但它仍然不起作用.

谢谢你们提前帮忙!



1> Shawn Lu..:

新发现

我的GS4(Android 4.3)无法运行此应用程序,但HTC One M8(Android 5.0.1)可以运行它

根本原因

65K方法限制请参阅此文档:https://developer.android.com/tools/building/multidex.html 基本上有方法参考限制,唯一的解决方案是使用multidex配置.但是,5.0之前和5.0之后的平台都有实现

该解决方案在以下两个描述:https : //developer.android.com/tools/building/multidex.html https://developer.android.com/reference/android/support/multidex/MultiDexApplication.html 对于我的项目,因为它支持旧版Android,我使用"multidex支持库"解决方案.

    将所有库模块和应用程序模块的构建工具版本设置为最新的21.1.2

    对于具有Application类的模块,添加compile'c​​om.android.support:multidex:1.0.0'作为依赖项

    请参阅此链接以修改您的应用程序类.https://developer.android.com/reference/android/support/multidex/MultiDexApplication.html

    在同一个gradle脚本中,在android - > defaultConfig块下,添加"multiDexEnabled true"

    如果您的系统出现"Java堆大小"错误,请在应用程序模块的gradle脚本中添加以下内容

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}

推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
author-avatar
newphper
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有