2015-10-19 3 views
0

J'essaie d'utiliser JavaCV dans Android Studio, mais chaque fois que j'essayé d'utiliser la bibliothèque et l'exécuter, il se bloque et logcat montre cette erreur ..NoClassDefFoundError et ClassNotFoundException sur la bibliothèque JavaCV

01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime: FATAL 

EXCEPTION: main 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at org.bytedeco.javacpp.Loader.load(Loader.java:392) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at org.bytedeco.javacpp.Loader.load(Loader.java:358) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at org.bytedeco.javacpp.opencv_imgcodecs.<clinit>(opencv_imgcodecs.java:13) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at com.example.user.dmr.MainActivity.onCreate(MainActivity.java:20) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.Activity.performCreate(Activity.java:5122) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1084) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.ActivityThread.access$600(ActivityThread.java:162) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:107) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:194) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5392) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:525) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at java.lang.Class.classForName(Native Method) 
01-03 09:16:32.242 15233-15233/com.example.user.dmr E/AndroidRuntime:  at java.lang.Class.forName(Class.java:217) 

Cette est le code java dans le studio Android que je suis en train de courir:

package com.example.user.dmr; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 

import static org.bytedeco.javacpp.opencv_core.*; 
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage; 


public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView v = (TextView) findViewById(R.id.textview1); 

     IplImage image = cvLoadImage("drawable/face1.JPG"); //crashes when it read this line 

     if (image == null) { 
      v.setText("Fail"); 
     } else { 
      v.setText("Succeed"); 
     } 
    } 
} 

Je l'ai déjà ajouté la bibliothèque javacv dans les bibliothèques externes. Ce sont les dépendances que j'ai ajoutées dans build.gradle.

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
compile group: 'org.bytedeco', name: 'javacv', version: '1.0' 
} 

Une idée de ce qui se passe et comment le réparer? Merci.

+0

Utilisez-vous proguard? – Nizam

+0

Je pense que depuis build.gradle contient cette ligne: buildTypes {{ libération minifyEnabled faux proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.pro' }} – Cael

+0

Ensuite, il ne devrait pas être un problème proguard puisque 'minifyEnabled' est' false' – Nizam

Répondre

0

Je pense que vous avez également besoin de javacpp-presets.

Essayez ceci dans vos dépendances Gradle:

compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.0.0' + '-1.0' 

compile group: 'org.bytedeco', name: 'javacv', version: '1.0' 
+0

J'ai essayé de compiler le groupe: 'org.bytedeco.javacpp-presets', nom: 'opencv', version: '3.0.0-1.0', classificateur: 'android-arm' (puisque urs ne compile pas) et une autre erreur survient quand je le teste sur un périphérique: A/libc: Fatal signal 11 (SIGSEGV) à 0x00000028 (code = 1), thread 28699 (xample.user.dmr) – Cael

+0

Une idée de ce qui se passe? J'ai supprimé le classificateur: 'android-arm' et l'erreur est de retour (NoClassDefFoundError et ClassNotFoundException) – Cael

+0

@Cael https://github.com/bytedeco/javacv/issues/179#issuecomment-122510578? –