2015-10-19 122 views
0

我想在Android Studio中但每次我試圖使用該庫並運行它時使用JavaCV,它崩潰和logcat的顯示這個錯誤..的NoClassDefFoundError和ClassNotFoundException的上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) 

這是我試圖運行的Android Studio中的java代碼:

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"); 
     } 
    } 
} 

我已經在外部庫中添加了javacv庫。這是我添加到build.gradle中的依賴關係。

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

任何想法爲什麼它繼續發生,以及如何解決它?謝謝。

+0

你使用ProGuard? – Nizam

+0

我這麼認爲,因爲的build.gradle包含此行:buildTypes { 發佈{ minifyEnabled假 proguardFiles getDefaultProguardFile( 'proguard的-android.txt'), 'proguard-rules.pro' }} 然後 – Cael

+0

它不應該是一個proguard問題,因爲'minifyEnabled'是'false' – Nizam

回答

0

我想你還需要javacpp-presets。

在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

我試過編譯組:'org.bytedeco.javacpp-presets',name: 'opencv',版本:'3.0.0-1.0',classifier:'android-arm'(因爲urs不在編譯),當我在設備上測試時出現另一個錯誤:A/libc:致命信號11(SIGSEGV )在0x00000028(代碼= 1),線程28699(xample.user.dmr) – Cael

+0

任何想法爲什麼發生這種情況?我刪除了分類器:'android-arm',錯誤又回來了(NoClassDefFoundError和ClassNotFoundException) – Cael

+0

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

相關問題