Java NoClassDefFoundError:解析:Lcom/parse/ui/R$layout失败;关于棒棒糖
我是一名新开发人员,试图使用该服务制作Android应用程序。我的应用程序使用了上可用的ParseUI,并且运行良好 但是,最近在运行应用程序时,我在应用程序启动时遇到以下错误:Java NoClassDefFoundError:解析:Lcom/parse/ui/R$layout失败;关于棒棒糖,java,android,android-studio,parse-platform,Java,Android,Android Studio,Parse Platform,我是一名新开发人员,试图使用该服务制作Android应用程序。我的应用程序使用了上可用的ParseUI,并且运行良好 但是,最近在运行应用程序时,我在应用程序启动时遇到以下错误: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/parse/ui/R$layout; at com.parse.ui.ParseLoginFragment.onCreateView(ParseLoginFragment.java:21
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/parse/ui/R$layout;
at com.parse.ui.ParseLoginFragment.onCreateView(ParseLoginFragment.java:212)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.parse.ui.R$layout" on path: DexPathList[[zip file "/data/app/com.udrink-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.udrink-1, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.parse.ui.ParseLoginFragment.onCreateView(ParseLoginFragment.java:212)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
Suppressed: java.lang.ClassNotFoundException: com.parse.ui.R$layout
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 20 more
Caused by: java.lang.NoClassDefFoundError: Class "Lcom/parse/ui/R$layout;" not found
... 24 more
我知道以前有一些关于这个问题的问题。但这有点不同,因为这个错误只发生在运行Android KitKat和之前(API=21)的设备上,它运行得非常好
有人能指出这里的问题是什么以及如何解决吗
这是我的项目的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId 'com.udrink'
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// Module dependency on ParseLoginUI library sources
compile 'com.google.android.gms:play-services:7.5.0'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.tonicartos:superslim:0.4.13'
compile 'com.makeramen:roundedimageview:2.1.0'
compile 'com.daimajia.swipelayout:library:1.2.0'
compile 'com.github.gabrielemariotti.cards:cardslib-core:2.1.0'
compile 'com.github.gabrielemariotti.cards:cardslib-cards:2.1.0'
compile 'com.github.gabrielemariotti.cards:cardslib-recyclerview:2.1.0'
compile('com.mikepenz:actionitembadge:3.0.1@aar') {
transitive = true
}
compile 'com.github.jd-alexander:library:1.0.5'
compile 'com.github.castorflex.smoothprogressbar:library:1.1.0'
compile 'com.github.castorflex.smoothprogressbar:library-circular:1.1.0'
compile project(':ParseLoginUI')
compile project(':crop')
}
我正在运行Android Studio 1.3
编辑
以下是一些附加信息:
导致此错误的特定代码如下:
at com.parse.ui.ParseLoginFragment.onCreateView(ParseLoginFragment.java:212)
在ParseUI中的ParseLoginFragment.java
中指向这一行的代码:
View v = inflater.inflate(R.layout.com_parse_ui_parse_login_fragment, parent, false);
正如您所看到的,这只是简单的布局充气代码,没有任何特定于API的函数
此外,该消息指定错误为:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/parse/ui/R$layout;
据我所知,这意味着找不到
ParseUI
的R
类。在调用大于最小化级别的代码(API)之前,应该先检查API级别。e、 你的版本是16。当你在使用一个诞生于22世纪的API时。那你需要
if (android.os.Build.VERSION.SDK_INT >=22)
{
//the specify code.
}
在我和我的朋友仔细检查代码后,我们终于知道问题出在哪里: 这是因为minhazur建议的先前错误修复。我将
multiDexEnabled true
添加到我的gradle.build
中,而没有仔细查看这篇文章,以获得棒棒糖前的支持。因此,具有多索引类的应用程序丢失了对我的库类的引用,因此未找到类R
的错误
我按照页面的说明解决此问题:
- 首先是我的
:gradle.build
dependencies { compile 'com.android.support:multidex:1.0.0' }
- 然后,按照页面上的
类文档的指示,扩展我的MultiDexApplication
类(或在应用程序
中声明应用程序类,或重写AndroidManifest.xml
函数)attachBaseContext()
这已经解决了我的问题。我很感谢您的回答,但错误代码不是API特有的,因为我编辑的问题状态不是API特有的,所以这不是我想要的。