Я создал новый проект с помощью Android Studio и скопировал файл jar в свои приложения. Затем добавили его как библиотеку, которая заставила IDE распознать ее. Позже я добавил его в build.gradle
, и теперь он просто компилируется. Однако, когда я пытаюсь запустить приложение на устройстве, он сбрасывается с NoClassDefFoundError
.Импорт внешнего файла jar в Android Studio --- NoClassDefFoundError
Прикрепленный и в следующем порядке:
- Дерево проекта на Android Studio. Обратите внимание на
test-jar-to-import.jar
внутриHelloSheepProject/HelloSheep/libs/
. - Содержание
MainActivity.java
. Он пытается создать новыйMyFile
. Ничего больше. build.gradle
внутриHelloSheepProject/HelloSheep/
. Я добавил строкуcompile files('libs/test-jar-to-import.jar')
.- Содержание
MyFile.java
. Он был создан в Eclipse и экспортирован как файл jar. - Ошибка при попытке запустить его на устройстве.
Любые идеи о том, что мне не хватает? Я пробовал ./gradlew clean
в HelloSheepProject
, но это не помогло.
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)
Ваше сообщение только что закончилось 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_25 \ bin \ java.exe '' закончил с ненулевым значением выхода 1' при попытке запустить приложение. Изменен двоичный формат библиотеки классов для JDK 7 (из свойств проекта Netbeans), и теперь он работает! Еще раз спасибо. – Rachel