Import external jar file in Android Studio --- NoClassDefFoundError

I created a new project using Android Studio and copied the jar file into my applications. Then they added it as a library that made the IDE recognize it. Later I added it to build.gradle and now it just compiles. However, when I try to run the application on the device, it crashes using NoClassDefFoundError .

Attached and in order:

  • Project tree on Android Studio. Check out test-jar-to-import.jar inside HelloSheepProject/HelloSheep/libs/ .
  • The contents of MainActivity.java . He is trying to create a new MyFile . Nothing else.
  • build.gradle inside HelloSheepProject/HelloSheep/ . I added the line compile files('libs/test-jar-to-import.jar') .
  • The contents of MyFile.java . It was created in Eclipse and exported as a jar file.
  • An error occurred while trying to run it on the device.

Any ideas on what I'm missing? I tried ./gradlew clean in HelloSheepProject , but that did not help.


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) 

+4
source share
2 answers

I found a solution to my problem. Since I was lost for several hours, I will keep the thread instead of deleting it.

I am trying to import a jar that has been compiled / exported with Java 7. Once I turned on Java 6 compatibility, it worked fine.

To summarize, adding an external jar file in Android Studio:

  • Copy the jar folder to the root / project / libs folder;
  • Right click and add as a library;
  • Add the jar to root / project / build.gradle (something like compile files('libs/test-jar-to-import.jar') );
  • Make sure that the imported jar complies with Java 6 (at the moment 7 will not run).
+10
source

In my case, at runtime, I got the same NoClassDefFoundError error, even if it compiled in order. It used to work well. But once I added a new package to my application, as a result of which the package namespace changed. My jar was already part of the application structure, so I was somewhat surprised at this new runtime error, which suddenly started complaining about an unknown class in the jar library that worked earlier. The fix in my case was a simple Build-> Clean project.

0
source

Source: https://habr.com/ru/post/1492349/


All Articles