Android Studio를 사용하여 새 프로젝트를 만들고 응용 프로그램의 lib에 jar 파일을 복사했습니다. 그런 다음 라이브러리로 추가하여 IDE에서이를 인식하게합니다. 나중에, build.gradle
에 추가했고 이제는 잘 컴파일됩니다. 그러나 장치에서 응용 프로그램을 실행하려고하면 NoClassDefFoundError
과 충돌합니다. Android Studio에서 외부 jar 파일 가져 오기 --- NoClassDefFoundError
- 프로젝트 트리.
HelloSheepProject/HelloSheep/libs/
안에test-jar-to-import.jar
이 있음을 알 수 있습니다. MainActivity.java
의 내용입니다. 새MyFile
을 만들려고합니다. 다른 건 없어.build.gradle
안에HelloSheepProject/HelloSheep/
. 나는compile files('libs/test-jar-to-import.jar')
줄을 추가했다.MyFile.java
의 내용. 이클립스에서 생성되어 jar 파일로 익스포트됩니다.- 장치에서 실행하려고하면 오류가 발생합니다.
내가 누락 된 아이디어가 있습니까? HelloSheepProject
에 ./gradlew clean
을 시도했지만 도움이되지 않았습니다.
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)
내 게시물에'~/sdk/extras/google/gcm/gcm-client/dist/gcm.jar'을 프로젝트에서 새로 생성/libs로 드래그 앤 드롭 한 후 나머지 3 개월을 따릅니다. 당신의 지시. 감사. –
감사합니다. 나는 몇 시간 동안이 일을 해왔다. 내 안드로이드 애플 리케이션은 Java 1.8을 사용하고 클래스 라이브러리는 JDK 8로 설정되었다. 컴파일 된 모든 것은 컴파일되었지만 계속 com.android.ide.common.process.ProcessException : org.gradle.process.internal.ExecException : 프로세스 'command'를 가져왔다. C : \ Program Files \ Java \ jdk1.8.0_25 \ bin \ java.exe '를 실행해야합니다. Netbeans 프로젝트 속성에서 클래스 라이브러리의 바이너리 형식을 JDK 7로 변경하여 이제 작동합니다! 다시 한번 감사드립니다. – Rachel