机器人工作室:在运行时出现NoClassDefFoundError异常与Java库模块机器人、模块、异常、工作室

2023-09-03 23:29:08 作者:专属的偏见

我有一个运行我的应用程序有问题。这个问题似乎是,在机器人工作室0.4.2任何Java库模块创建的NoClassDefFoundError类时,这些模块在运行时引用。该应用程序编译没有错误或警告。

我的项目包含以下4个模块:

SimpleMessenger(Java库模块) Nfc.Benchmark.Domain(Java库模块) Nfc.Benchmark.View(Android的库模块) Nfc.Benchmark.View.Gui(Android应用模块)

当应用程序正在运行,simplemessenger.MessengerService类被引用,执行失败,并出现NoClassDefFoundError例外。

堆栈跟踪:

  01-09 14:40:​​13.819 1152年至1152年/ no.as.gold.nfc.benchmark.view.gui E / AndroidRuntime:致命异常:主要
java.lang.NoClassDefFoundError的:no.as.gold.simplemessenger.MessengerService
        在no.as.gold.nfc.benchmark.view.BaseTagFragment.registerMessageListeners(BaseTagFragment.java:37)
        在no.as.gold.nfc.benchmark.view.BaseTagFragment< INIT>(BaseTagFragment.java:26)
        在no.as.gold.nfc.benchmark.view.ReadTagFragment< INIT>(ReadTagFragment.java:27)
        在no.as.gold.nfc.benchmark.view.gui.activities.MainActivity$SectionsPagerAdapter.<init>(MainActivity.java:317)
        在no.as.gold.nfc.benchmark.view.gui.activities.MainActivity.refreshActionBar(MainActivity.java:194)
        在no.as.gold.nfc.benchmark.view.gui.activities.MainActivity.onCreate(MainActivity.java:72)
        在android.app.Activity.performCreate(Activity.java:5255)
        在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
        在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
        在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2110)
        在android.app.ActivityThread.access $ 600(ActivityThread.java:138)
        在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1205)
        在android.os.Handler.dispatchMessage(Handler.java:99)
        在android.os.Looper.loop(Looper.java:137)
        在android.app.ActivityThread.main(ActivityThread.java:4940)
        在java.lang.reflect.Method.invokeNative(本机方法)
        在java.lang.reflect.Method.invoke(Method.java:511)
        在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:798)
        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
        在dalvik.system.NativeStart.main(本机方法)
 

来源$ C ​​$ C,其中的异常被抛出(MessengerService.Default.Register(...)):

 公共抽象类BaseTagFragment扩展片段{
//区域
私人特征MTAG;
// endregion

//区域构造
/ **
 *构造发起的BaseTagFragment
 * /
公共BaseTagFragment(){
    //添加消息监听器
    registerMessageListeners();
}
// endregion

//区域属性
公共标签GetTag(){返回MTAG;}
// endregion

//地区私有方法
私人无效registerMessageListeners(){
    //新意图提取标签
    MessengerService.Default.Register(这一点,NewIntentMessage.class,新的MessageHandler&LT; NewIntentMessage&GT;(){

        @覆盖
        公共无效处理程序(NewIntentMessage味精){
            标签标记= msg.Intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            如果(标记!= NULL)MTAG =标签;
        }
    });
}
// endregion
 
邵东这个人被新华社报道了 快看发生了什么

}

在我升级到Android 0.4.2工作室,我删除了.gradle缓存如下所述:Android工作室0.3 Java库模块不工作并且工作得很好,直到升级。现在,我不知所措,我搜索了几个小时没有发现任何有用的。

任何帮助是极大AP preciated!

修改build.gradle与SimpleMessenger.jar添加到库\文件夹(这并没有解决问题):

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.7.+
    }
}
应用插件:机器人库

库{
    mavenCentral()
}

安卓{
    compileSdkVersion 17
    buildToolsVersion '17 .0.0

    defaultConfig {
        的minSdkVersion 16
        targetSdkVersion 16
    }
    推出 {
        runProguard假
        proguardFileProGuard的,rules.txt
        proguardFile getDefaultProguardFile('ProGuard的-android.txt)
    }
}

依赖{
    编制项目(:Nfc.Communication)
    编译org.apache.commons:公地lang3:3.1
    编译com.google.android:support-v4:r6
    编制项目(:Nfc.Benchmark.Domain)
    //编制项目(:SimpleMessenger)
    编译文件(库/ SimpleMessenger.jar)
}
 

解决方案

这个问题在Android的工作室0.4.4解析:D(的 http://tool​​s.android.com/recent/androidstudio044released )

I have a problem with running my app. The issue seems to be that any java library modules in android studio 0.4.2 create NoClassDefFoundError when classes in these modules are referenced at runtime. The app compiles without errors or warnings.

My project contains these 4 modules:

SimpleMessenger (Java Library module) Nfc.Benchmark.Domain (Java Library module) Nfc.Benchmark.View (Android Library module) Nfc.Benchmark.View.Gui (Android application module)

When the app is running and the simplemessenger.MessengerService class is referenced, the execution fails with a NoClassDefFoundError exception.

Stacktrace:

01-09 14:40:13.819    1152-1152/no.as.gold.nfc.benchmark.view.gui E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: no.as.gold.simplemessenger.MessengerService
        at no.as.gold.nfc.benchmark.view.BaseTagFragment.registerMessageListeners(BaseTagFragment.java:37)
        at no.as.gold.nfc.benchmark.view.BaseTagFragment.<init>(BaseTagFragment.java:26)
        at no.as.gold.nfc.benchmark.view.ReadTagFragment.<init>(ReadTagFragment.java:27)
        at no.as.gold.nfc.benchmark.view.gui.activities.MainActivity$SectionsPagerAdapter.<init>(MainActivity.java:317)
        at no.as.gold.nfc.benchmark.view.gui.activities.MainActivity.refreshActionBar(MainActivity.java:194)
        at no.as.gold.nfc.benchmark.view.gui.activities.MainActivity.onCreate(MainActivity.java:72)
        at android.app.Activity.performCreate(Activity.java:5255)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2110)
        at android.app.ActivityThread.access$600(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4940)
        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:798)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
        at dalvik.system.NativeStart.main(Native Method)

Source code where the exception is thrown (MessengerService.Default.Register(...)):

public abstract class BaseTagFragment extends Fragment {
//region fields
private Tag mTag;
//endregion

//region Constructors
/**
 * Constructor that initiates the BaseTagFragment
 */
public BaseTagFragment() {
    // Add message listeners
    registerMessageListeners();
}
//endregion

//region Properties
public Tag GetTag() {return mTag;}
//endregion

//region Private methods
private void registerMessageListeners() {
    // Extract tags from new intents
    MessengerService.Default.Register(this, NewIntentMessage.class, new MessageHandler<NewIntentMessage>() {

        @Override
        public void handler(NewIntentMessage msg) {
            Tag tag = msg.Intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            if(tag != null) mTag = tag;
        }
    });
}
//endregion

}

Before i upgraded to Android Studio 0.4.2, i removed the .gradle cache as described here: Android Studio 0.3 Java Library Module doesnt work and that worked fine until the upgrade. Now i'm at a loss, i've searched for hours without finding anything useful.

Any help is greatly appreciated!

Modified build.gradle with SimpleMessenger.jar added to the libs\ folder (This did not solve the issue):

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion '17.0.0'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 16
    }
    release {
        runProguard false
        proguardFile 'proguard-rules.txt'
        proguardFile getDefaultProguardFile('proguard-android.txt')
    }
}

dependencies {
    compile project(':Nfc.Communication')
    compile 'org.apache.commons:commons-lang3:3.1'
    compile 'com.google.android:support-v4:r6'
    compile project(':Nfc.Benchmark.Domain')
    //compile project(':SimpleMessenger')
    compile files('libs/SimpleMessenger.jar')
}

解决方案

This issue is resolved in Android Studio 0.4.4 :D (http://tools.android.com/recent/androidstudio044released)