Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法

解决方法

首先把方法写出来,起因和经过和原理写在后面,时间仓促的直接看解决方法吧。

一般出现这个错都是使用的provided导致的

例如,我的旧配置如下:

Project build.gradle文件:

buildscript {
 dependencies {
  classpath 'com.android.tools.build:gradle:3.0.1'
  // need delete in gradle3.x version
  classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
 }
}
Module build.gradle文件:
apply plugin: 'com.android.library'
apply plugin: 'android-apt'
android {
 // ...
}
configurations {
 provided
}
dependencies {
 // ...
 // Fyber Annotations
 provided 'com.fyber:fyber-annotations:1.3.0'
 apt 'com.fyber:fyber-annotations-compiler:1.4.0'
 // ...
}

改为最新的build.gradle3.x 的配置:

Project build.gradle文件:

buildscript {
 dependencies {
  classpath 'com.android.tools.build:gradle:3.0.1'
 }
}
Module build.gradle文件:
apply plugin: 'com.android.library'
android {
 // ...
 // add this code to enable annotationProcessor
  javaCompileOptions {
   annotationProcessorOptions {
    includeCompileClasspath = true
   }
  }
}
dependencies {
 // ...
 // Fyber Annotations
 compileOnly 'com.fyber:fyber-annotations:1.3.0'
 annotationProcessor 'com.fyber:fyber-annotations-compiler:1.4.0'
 // ...
}

更改完以上配置在build Project后即可成功运行了。如果不能请往下看:

注意事项:

上面的Module build.gralde的配置必须写在使用注解所在的 Module 中!

例如我在 Module A中的 MainActivity 使用了 @FyberSDK的注解,那么我将上述配置写在Module A的build.gralde 文件中。

@FyberSDK
public class MainActivity extends BaseActivity<MainPresenter, MainModel> implements
  IBannerDelegate, IMainView,
  View.OnClickListener {
  //....
  }

补充相关知识

关于 apt 的介绍

1、什么是APT?

APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注释自动生成代码。Annotation处理器在出来Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。

2、annotationProcessor

annotationProcessor是APT工具中的一种,他是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用

3、android-apt

android-apt是由一位开发者自己开发的apt框架,源代码托管在这里,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt ,自此android-apt 作者在官网发表声明最新的Android Gradle插件现在已经支持annotationProcessor,并警告和或阻止android-apt ,并推荐大家使用 Android 官方插件annotationProcessor。

其他

新配置 对应的过时配置 描述
implementation compile module编译时可用,module的使用者运行时可用,对于大量使用library的项目,可以显著提高编译时间,因为它可以减少构建系统重新编译一些module.大多数app/test因为使用这种配置
api compile module编译时可用,module的使用者编译和运行时可用,这个和过时的compile一样的。一般是library模块会使用它,如果app模块一定要使用它,必须是在它想暴露api给test模块使用
compileOnly provided module 编译时可用,但是module的使用者,在编译和运行时均不可用。跟过时的provided一样的。
runtimeOnly apk module和它的使用者,运行时可用.它跟过时的apk是一样.

总结

以上所述是小编给大家介绍的Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • AndroidStudio升级到3.0的新特性和注意事项小结
  • Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案
  • 浅析Android Studio 3.0 升级各种坑(推荐)
  • Android Studio升级到3.0后遇到的坑
  • android studio 3.0 升级 项目遇到的问题及更改思路(问题小结)
  • 详解升级Android Studio3.0时遇到的几个问题
  • Android Studio升级到3.0 Terminal 中文显示异常解决
(0)

相关推荐

  • AndroidStudio升级到3.0的新特性和注意事项小结

     概述 谷歌发布Android Studio3.0正式版已经有一段时间了,最近抽空升级了一下,也踩了一些坑.特地记录一下.作为开发者第一时间体验谷歌带来的新特性是很有必要的.当然为了项目稳定性,也要根据实际情况决定是否升级相关插件 升级 从已有的IDE升级,无非就是File->Settings->Appearance&Behavior->Updates,这里可以选择升级渠道:Canary(金丝雀)Dev(开发版)Beta(Beta版)Stable(稳定版),以及是否使用安全链接.

  • Android Studio升级到3.0后遇到的坑

    这几天谷歌推出了as3.0的正式版,相信大家都进行更新了,然后对3.0的新特性也有过一些了解,最后磨刀霍霍开始宰杀,然鹅却一不小心就开始了排坑之路. 第一坑.必须升级gradle到4.0以上 相信这个大坑,一般使用as的人都会解决了,所以就不多说 第二坑.buildToolsVersion升级到26.0.0 其实这个不算坑,一般buildToolsVersion都会升级到最新的版本,直接更新就是了 第三坑.Error:Resource shrinker cannot be used for li

  • 浅析Android Studio 3.0 升级各种坑(推荐)

    点击 Check for Updates 增量更新: 下载完成,会提示更新 您将 Gradle 更新至 4.1: 这里建议您对老项目先暂时点击 Don't remind me on this project,以防有坑.当然我不入地狱谁入地狱,我点 Update,于是问题来了,一直处于下载中,不过,莫担心,我下载好了,公众号聊天界面回复「 gradle-4.1-all 」,下载 gradle-4.1-all.zip 文件,放到: 重启 Android Studio. gradle 目录: Mac系

  • android studio 3.0 升级 项目遇到的问题及更改思路(问题小结)

    Android Studio从3.0版本新增了许多功能,当然首当其冲就是从3.0版本新增了对 Kotlin 开发语言的支持,除此之外还有其他一些新功能,例如:Android Profiler (其中包含了: CPU Profiler.Memory Profiler.Network Profiler ),APK Debugger,Device File Explorer,Java 8 Language Features等. android studio 3.0版本升级问题修改: ===> 问题一

  • 详解升级Android Studio3.0时遇到的几个问题

    今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋.如果还有童鞋遇到不同的问题,也可以评论下我做下记录 1.gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' ) 报错 Error:(56, 0) Cannot set the value of read-only property 'outputFile' for

  • Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案

    AndroidStudio终于出3.0正式版了,内置了kotlin(虽然我安了插件一直能用).一直忍着没敢下rc版的好奇猫,总算装了正式版.当然,伴随每次大版本更新,总有一些恼人的后遗症,其中以gradle问题最多.AS3.0要求gradle版本在3.5以上,配置文件内将标准版本指定为gradle-4.1-milestone-1. 之前用的是AS2.3,在稳定版3.0发布之后由于好奇,就更新到了3.0.但是,除了Android Profiler分析器+自我感觉native编译速度加快以外,其他的

  • Android Studio升级到3.0 Terminal 中文显示异常解决

    遇到这个问题的话应该是平时终端用的是zsh造成的,如果不是的话,那我也没办法,至少我是这么解决的,希望也可以帮到你. 具体Bug如下所示 内心有一万匹草泥马呼啸而过,捣豉了很久,最终在某群中问了下得到了答案,解决途径如下. 打开~/.zshrc文件,找到如下两行. # You may need to manually set your language environment # export LANG=en_US.UTF-8 我们把第二行取消注释即可,保存之后重启AS即可,熟悉的中文又出现在终

  • Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法

    解决方法 首先把方法写出来,起因和经过和原理写在后面,时间仓促的直接看解决方法吧. 一般出现这个错都是使用的provided导致的 例如,我的旧配置如下: Project build.gradle文件: buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.1' // need delete in gradle3.x version classpath 'com.neenbedankt.gradle.

  • Exception in thread main java.lang.NoClassDefFoundError错误解决方法

    错误描述 javac helloworld.java能够通过.但是java helloworld出现错误: hadoop@xuwei-erplab:~/jarfile$ java HelloWorld Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/xuwei/HelloWorld) at java.lang.ClassLoader.defineClass1(N

  • java.lang.NoClassDefFoundError错误解决办法

    java.lang.NoClassDefFoundError错误解决办法 前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往往花费时间去不断尝试一些其他的方法去解决这

  • Android 出现:java.lang.NoClassDefFoundError...错误解决办法

    今天测试突然给我说我写的XX界面一点app就crash了! 纳尼,我肯定表示不服啊!怎么可能出现一点击就崩溃的情况呢,明明自己的测试了的! 然后我又用自己的测试机试了下没问题(Version:5.0.2),然后又使用crash的测试手机(Version:4.4),乖乖,居然是4.4才会出现的情况!(4.4以下没有验证哈!可能都会吧!!!) log显示: W/System.err: java.lang.NoClassDefFoundError: android/os/PersistableBund

  • c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法

    错误为: Android.mk文件 c++的调用方法为: 复制代码 代码如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := TestNdk LOCAL_CPP_EXTENSION :=com_ndk_test_JniClient.cpp include $(BUILD_SHARED_LIBRARY) c中的调用方法: 复制代码 代码如下: LOCAL_SRC_FILES := com_ndk_test_Jn

  • maven引入本地jar包运行报错java.lang.NoClassDefFoundError解决

    目录 正文 maven引入本地jar的示例 配置maven将本地jar打入package中 maven打包知识分享 scope详解 正文 下文笔者讲述maven引入本地jar包时,运行报错"java.lang.NoClassDefFoundError"的处理方法分享,如下所示 今天在编写maven项目    导入本地jar包    部署到服务器上找不到包  报错信息如:java.lang.NoClassDefFoundError那么如何解决呢?   这种问题是由于,本地jar包在打包的

  • Android Studio升级到4.1以后插件问题解决

    当把Android Studio升级到4.1以后插件提示不可用,然后启动的报下面的错: 错误的意思是该插件只支持IDEA,然后想把这个插件删除,发现在已安装的插件中是找不到这个插件的,如下: 然后发现需要安装: 然后就进入了死循环,启动的时候提示已经安装,但是无法使用,报错,删除的时候提示没有安装,无法删除. 解决办法: 找到Android Studio的插件安装路径,然后删除该插件的安装包或者jar文件即可. 路径一般为:C:\Users\userName\AppData\Roaming\Go

随机推荐