GVKun编程网logo

Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB

5

在本文中,我们将给您介绍关于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: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

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:

今天在使用 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

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 Abuild.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的解决方法

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的解决方法等相关知识,可以在本站进行查询。

本文标签: