在Android Studio中导入外部jar文件--NoClassDefFoundError

在Android Studio中导入外部jar文件--NoClassDefFoundError,jar,noclassdeffounderror,android-studio,build.gradle,Jar,Noclassdeffounderror,Android Studio,Build.gradle,我使用androidstudio创建了一个新项目,并将一个jar文件复制到我的应用程序的libs中。然后将其添加为库,这使IDE能够识别它。后来,我将它添加到build.gradle中,现在它可以正常编译了。但是,当我尝试在设备上运行应用程序时,它会崩溃,出现NoClassDefFoundError 随信附上并按顺序排列: Android Studio上的项目树。注意HelloSheep项目/HelloSheep/libs/中要导入.jar的测试jar MainActivity.java的内容。

我使用androidstudio创建了一个新项目,并将一个jar文件复制到我的应用程序的libs中。然后将其添加为库,这使IDE能够识别它。后来,我将它添加到
build.gradle
中,现在它可以正常编译了。但是,当我尝试在设备上运行应用程序时,它会崩溃,出现
NoClassDefFoundError

随信附上并按顺序排列:

  • Android Studio上的项目树。注意
    HelloSheep项目/HelloSheep/libs/
    中要导入.jar的
    测试jar
  • MainActivity.java
    的内容。它正在尝试创建一个新的
    MyFile
    。没有别的了
  • build.gradle
    内部
    HelloSheep项目/HelloSheep/
    。我添加了行
    compilefiles('libs/testjar to import.jar')
  • MyFile.java的内容。它是在Eclipse中创建的,并作为jar文件导出
  • 尝试在设备上运行时出错
  • 你知道我遗漏了什么吗?我在
    HelloSheepProject
    中尝试了
    /gradlew clean
    ,但没有效果








    我找到了解决问题的办法。因为我已经在这个问题上迷失了几个小时,所以我将保留该线程,而不是删除它

    我正在导入的jar是在考虑Java7的情况下编译/导出的。一旦我启用了Java6的遵从性,它就工作得很好

    总之,在Android Studio中添加外部jar文件时:

  • 将jar复制到root/project/libs文件夹
  • 右键单击并添加为库
  • 将jar添加到root/project/build.gradle(类似于编译文件('libs/testjar to import.jar')
  • 确保导入的jar符合Java6(目前7不适用)

  • 在我的例子中,我在运行时得到了相同的
    NoClassDefFoundError
    错误,即使它编译正常。它以前工作得很好。但是有一天,我在我的应用程序中添加了一个新的包,这导致包名空间被更改。我的jar已经是应用程序结构的一部分,所以我对这个新的运行时错误感到有些惊讶,它突然抱怨jar库中以前工作的未知类。
    在我的例子中,修复是一个简单的构建->清理项目。

    您的帖子刚刚完成了3个小时的挫折,在我的例子中,将
    ~/sdk/extras/google/gcm/gcm client/dist/gcm.jar
    拖放到新创建的/libs-off项目中,然后按照您的其余说明进行操作。谢谢,谢谢!我已经干了好几个小时了。我的Android应用程序使用Java 1.8,我的类库设置为JDK 8。所有已编译但不断获取
    com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'C:\Program Files\Java\jdk1.8.0\u 25\bin\Java.exe''在尝试运行应用程序时,退出值为非零。将类库的二进制格式更改为JDK 7(来自Netbeans项目属性),现在它可以工作了!再次感谢。
    
    package top.furrylamb.example.hellosheep;
    
    import android.os.Bundle;
    import android.app.Activity;
    
    import top.furrylamb.example.MyFile;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            MyFile myFile = new MyFile("hi", "there");
        }
    
    }
    
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.5.+'
        }
    }
    apply plugin: 'android'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.android.support:support-v4:13.0.+'
        //compile fileTree(dir: "libs", include: "*.jar")
        compile files('libs/test-jar-to-import.jar')
    }
    
    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"
    
        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 16
        }
    }
    
    package top.furrylamb.example;
    
    public class MyFile {
        public final String left;
        public final String right;
        public MyFile(String left, String right) {
            this.left = left;
            this.right = right;
        }
    }
    
    07-19 19:26:33.855  13656-13656/? E/AndroidRuntime: FATAL EXCEPTION: main
            java.lang.NoClassDefFoundError: top.furrylamb.example.MyFile
            at top.furrylamb.example.hellosheep.MainActivity.onCreate(MainActivity.java:15)
            at android.app.Activity.performCreate(Activity.java:5206)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
            at android.app.ActivityThread.access$600(ActivityThread.java:140)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4898)
            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:1006)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
            at dalvik.system.NativeStart.main(Native Method)