在本文中,我们将给您介绍关于AndroidStudiojava.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB的详细内容,此外,
在本文中,我们将给您介绍关于Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB的详细内容,此外,我们还将为您提供关于android studio java.lang.NoClassDefFoundError Gson、Android Studio 之 java.lang.NoClassDefFoundError:、Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError、Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法的知识。
本文目录一览:- Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB
- android studio java.lang.NoClassDefFoundError Gson
- Android Studio 之 java.lang.NoClassDefFoundError:
- Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError
- Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法
Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB
这是我的错误日志与Android Studio 1.0.2实现
02-03 13:05:23.831 8385-8385/com.******.*******E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB at android.support.v4.app.NavUtils$NavUtilsImplJB.getParentActivityName(NavUtils .java:125) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:302) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:281) at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:142) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) at com..******.*******.****.ActivityWelcome.onCreate(ActivityWelcome.java:33) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method)
组态
buildToolsVersion "21.1.2"android SDK TOOLS"24.0.2"multidex enabledpredexLibraries =falseincremental = truejumboMode = false dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.google.android.gms:play-services:6.5.87'' compile ''com.google.code.gson:gson:2.3'' compile ''com.android.support:support-v4:21.0.3@aar'' compile ''com.android.support:appcompat-v7:21.0.3@aar'' compile project('':ViewPagerIndicator'') compile(''de.keyboardsurfer.android.widget:crouton:1.8.4@aar'') { exclude group: ''com.google.android'', module: ''support-v4'' } compile ''org.java-websocket:Java-WebSocket:1.3.0''}
如何解决这个错误?gradlew清洁无济于事。构建文件夹删除也不起作用。Android Studio编译时未显示任何错误。
答案1
小编典典我遇到了这个问题,只是找到了解决方法-
答案是RTFM!以下是说明:https
:
//developer.android.com/tools/building/multidex.html
Multidexing是一项新功能,因此需要支持库才能与棒棒糖之前的设备兼容。您需要将以下内容添加到gradle文件依赖项中:
compile ''com.android.support:multidex:1.0.0''
同时在gradle文件中启用multidex输出:
android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true }}
然后将multidex支持应用程序添加到清单中:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application></manifest>
注意:
如果您的应用程序已经扩展了Application类,则可以重写attachBaseContext()方法并调用MultiDex.install(this)以启用multidex。有关更多信息,请参见MultiDexApplication
参考文档。
@Overrideprotected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this);}
同样,请参阅上面的说明以获取更多信息…
希望这可以帮助
android studio java.lang.NoClassDefFoundError Gson
我做了一个很新的项目.我通过谷歌将gson库添加到我的projects / libs目录并将其添加为库.我还将它添加到我的build.gradle中
compile files('libs/gson-2.2.4.jar')
所以现在一切看起来都不错,Android Studio没有任何错误,任何地方都没有红色下划线.我可以建立它并试一试.
但后来我遇到了这个错误:
java.lang.NoClassDefFoundError: com.google.gson.Gson
我在调试器中可以看到.事情是我已经添加它并且android studio可以看到但是来构建它给了我所有这些类型的问题.
我究竟做错了什么?
解决方法:
有同样的问题.我做的是gradle clean,然后从控制台用gradle构建我的项目.在我的build.gradle中,gson依赖关系如下所示:
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
Android Studio 之 java.lang.NoClassDefFoundError:
今天在使用 Android Studio 编程的过程中遇到了一个 java.lang.NoClassDefFoundError: 的 bug,上网百度了一下尝试很多办法都没有解决。幸好在我的坚持下解决了这个 bug。不过解决的方式让我有点羞愧!其实很多时候 java.lang.NoClassDefFoundError: 这个错误表面上看起来是找不到这个类,但是也应该检查一下环境变量的问题,我就是因为这个原因倒在了它的石榴裙下。
对于刚入门的新手来说,从 eclipse 转到 Android Studio 开发还是需要慢慢适应的,
最主要的问题就是 classpath 这个环境变量的配置上。我之前只有一个 “.” 而已。所以按照网上配置的方法重新配置了一下就可以运行了。
这是环境变量配置过程:http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html
Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError
Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError
这个问题折腾了2个小时,最后解决了,Stack Overflow 上也有一次类似的问题,但是没有人提供解答。
这个错误的意思是运行时没有找到类,所以一般是你编译通过了但是无法运行。
写完这个就去解答,希望更多的人看到并避免,节省大家的精力。
解决方法
首先把方法写出来,起因和经过和原理写在后面,时间仓促的直接看解决方法吧。
一般出现这个错都是使用的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的坑了
当你遇到坑时可以参考:
官方的升级3.0指南
填坑系列Android Studio 3.0配置更改
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。
其他
@H_301_81@
新配置 | 对应的过时配置 | 描述 |
---|---|---|
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,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
今天关于Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB的分享就到这里,希望大家有所收获,若想了解更多关于android studio java.lang.NoClassDefFoundError Gson、Android Studio 之 java.lang.NoClassDefFoundError:、Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError、Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法等相关知识,可以在本站进行查询。
本文标签: