2015-10-19 49 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? –

相关问题