在Android Studio中执行应用程序时出现NoClassDefFoundError
在我的项目中,我使用了一个.aar Android库,我把它放在//libs文件夹中。当然,我想在我的项目中使用这个库,所以我更改了build.gradle(中的一个),使它看起来像这样:在Android Studio中执行应用程序时出现NoClassDefFoundError,android,gradle,android-studio,noclassdeffounderror,aar,Android,Gradle,Android Studio,Noclassdeffounderror,Aar,在我的项目中,我使用了一个.aar Android库,我把它放在//libs文件夹中。当然,我想在我的项目中使用这个库,所以我更改了build.gradle(中的一个),使它看起来像这样: apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { applicationId "brgr
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "brgr.myapp"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:19.0.0'
compile(name:'MapboxAndroidSDK-0.3.0', ext:'aar') {
transitive = true
}
compile ('com.cocoahero.android:geojson:1.0.0@aar') {
transitive=true
}
}
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
在我的主要活动中使用库时,Android Studio的自动完成功能可以从库中找到类。但是,在执行应用程序时,出现以下错误:
2402-2402/brgr.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: brgr.myapp, PID: 2402
java.lang.NoClassDefFoundError: com.google.common.base.Strings
at com.mapbox.mapboxsdk.views.MapView.<init>(MapView.java:218)
at com.mapbox.mapboxsdk.views.MapView.<init>(MapView.java:249)
at brgr.myapp.MyActivity.onCreate(MyActivity.java:18)
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
2402-2402/brgr.myapp E/AndroidRuntime﹕ 致命异常:主
进程:brgr.myapp,PID:2402
java.lang.NoClassDefFoundError:com.google.common.base.Strings
位于com.mapbox.mapboxsdk.views.MapView(MapView.java:218)
位于com.mapbox.mapboxsdk.views.MapView。(MapView.java:249)
在brgr.myapp.MyActivity.onCreate(MyActivity.java:18)中
位于android.app.Activity.performCreate(Activity.java:5248)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
在android.app.ActivityThread.access$800(ActivityThread.java:139)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5102)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)
有人能帮我纠正这个错误吗?提前谢谢 如果你去掉依赖项中的显式打包(即删除
,ext:'aar'
和@aar
位),它是否有效?执行此操作时,同步Android Studio后会告诉我以下信息:错误:配置项目时出现问题:app'>无法解析配置“”的所有依赖项:应用:_debugCompile'>找不到:MapboxAndroidSDK-0.3.0:。Required by:MyApp:app:unspecified
通常情况下,Gradle不会从您明确指定打包的依赖项中提取可传递的依赖项;这是故意的。如果您的AAR文件是本地的,那么似乎关闭打包也不起作用。如果您可以通过网络存储库而不是本地文件来包含库,那么您可以不用打包,这样就可以工作了。无论如何,我认为你们的一个图书馆依赖于番石榴,而格拉德尔没有包括它。解决方案可能是为库的可传递依赖项添加显式依赖项。