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.access0(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 enabled
predexLibraries =false
incremental = true
jumboMode = 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 clean 没有帮助。构建文件夹删除也不起作用。 Android studio 在编译时没有显示错误。
我遇到了这个问题,刚刚找到了解决方案 - 答案是 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 class,您可以重写attachBaseContext()方法并调用MultiDex.install(this)来启用多索引。有关详细信息,请参阅 MultiDexApplication
参考文档。
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
同样,请参阅上面的说明以获取更多信息...
希望对您有所帮助
由于这个问题被卡了几个小时,但终于找到了解决方案。
步骤#1:
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
步骤#2:
defaultConfig {
multiDexEnabled true
}
步骤#3:
public class AppController extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
编码愉快!
以下解决方案对我有用:
在你的default Config
中添加multiDexEnabled = true
在你的依赖中添加编译com.android.support:multidex:1.0.0
Application class extend MultiDexApplication
而不仅仅是 Application
在我们的例子中,当我们将 "support-v4" lib 从 19 版本更新到 24 版本时,我们遇到了这个错误。
版本 19 包含 NavUtilsJB class:
但是24版本不包含NavUtilsJBclass:
这个问题的解决方案只是在我们的项目中创建 NavUtilsJB class:
package android.support.v4.app;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
class NavUtilsJB {
public static Intent getParentActivityIntent(Activity activity) {
return activity.getParentActivityIntent();
}
public static boolean shouldUpRecreateTask(Activity activity, Intent targetIntent) {
return activity.shouldUpRecreateTask(targetIntent);
}
public static void navigateUpTo(Activity activity, Intent upIntent) {
activity.navigateUpTo(upIntent);
}
public static String getParentActivityName(ActivityInfo info) {
return info.parentActivityName;
}
}
这是我使用 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.access0(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 enabled
predexLibraries =false
incremental = true
jumboMode = 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 clean 没有帮助。构建文件夹删除也不起作用。 Android studio 在编译时没有显示错误。
我遇到了这个问题,刚刚找到了解决方案 - 答案是 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 class,您可以重写attachBaseContext()方法并调用MultiDex.install(this)来启用多索引。有关详细信息,请参阅 MultiDexApplication
参考文档。
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
同样,请参阅上面的说明以获取更多信息...
希望对您有所帮助
由于这个问题被卡了几个小时,但终于找到了解决方案。
步骤#1:
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
步骤#2:
defaultConfig {
multiDexEnabled true
}
步骤#3:
public class AppController extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
编码愉快!
以下解决方案对我有用:
在你的
default Config
中添加在你的依赖中添加编译
com.android.support:multidex:1.0.0
Application class extend MultiDexApplication
而不仅仅是Application
multiDexEnabled = true
在我们的例子中,当我们将 "support-v4" lib 从 19 版本更新到 24 版本时,我们遇到了这个错误。
版本 19 包含 NavUtilsJB class:
但是24版本不包含NavUtilsJBclass:
这个问题的解决方案只是在我们的项目中创建 NavUtilsJB class:
package android.support.v4.app;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
class NavUtilsJB {
public static Intent getParentActivityIntent(Activity activity) {
return activity.getParentActivityIntent();
}
public static boolean shouldUpRecreateTask(Activity activity, Intent targetIntent) {
return activity.shouldUpRecreateTask(targetIntent);
}
public static void navigateUpTo(Activity activity, Intent upIntent) {
activity.navigateUpTo(upIntent);
}
public static String getParentActivityName(ActivityInfo info) {
return info.parentActivityName;
}
}