gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:16:43 25 4
gpt4 key购买 nike

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

附上并按顺序:

  1. Android Studio 上的项目树。请注意 HelloSheepProject/HelloSheep/libs/ 中的 test-jar-to-import.jar
  2. MainActivity.java 的内容。它正在尝试创建一个新的MyFile。没有别的了。
  3. HelloSheepProject/HelloSheep/内的build.gradle。我添加了行compile files('libs/test-jar-to-import.jar')
  4. MyFile.java 的内容。它是在 Eclipse 中创建并导出为 jar 文件。
  5. 我尝试在设备上运行它时出现错误。

对我所缺少的有什么想法吗?我在 HelloSheepProject 中尝试了 ./gradlew clean 但没有帮助。

<小时/>

enter image description here

<小时/>
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)
<小时/>

最佳答案

我找到了解决问题的方法。由于我已经对此迷失了几个小时,因此我将保留该线程而不是删除它。

我导入的 jar 是使用 Java 7 进行编译/导出的。一旦我启用了 Java 6 合规性,它就工作得很好。

总结一下,在Android Studio中添加外部jar文件时:

  1. 将 jar 复制到 root/project/libs 文件夹;
  2. 右键单击并添加为库;
  3. 将 jar 添加到 root/project/build.gradle (类似于 compile files('libs/test-jar-to-import.jar'));
  4. 确保导入的 jar 符合 Java 6(目前 7 还不行)。

关于jar - 在Android Studio中导入外部jar文件---NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com