2013-11-21 59 views
0

我使用javacv我的項目, 在我的項目,我想使用opencv_highui.cvLoadImage功能異常初始化錯誤javacv

我加入javacv.jar,javacpp.jar在libs文件夾,並提取所有文件等等 在庫/ armebi-V7A文件夾

但是當我跑我的項目它給我exceptionintialization錯誤 的錯誤是沒有遵循了OpenCV的任何其他步驟

請給我一些建議

這裏是我的代碼

import static com.googlecode.javacv.cpp.opencv_highgui.*; 


import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 



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



      try { 
       cvLoadImage("mnt/sdcard/make_machine_example1.png"); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

[] [1] [1]:http://i.stack.imgur.com/C19pE.png 我還附上我的項目結構,請給我建議

這裏是堆棧跟蹤

11-21 14:49:47.673: E/AndroidRuntime(2250): java.lang.ExceptionInInitializerError 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.example.demoproject.MainActivity.onCreate(MainActivity.java:23) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.Activity.performCreate(Activity.java:4465) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.ActivityThread.access$600(ActivityThread.java:127) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.os.Looper.loop(Looper.java:137) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at android.app.ActivityThread.main(ActivityThread.java:4448) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.reflect.Method.invokeNative(Native Method) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.reflect.Method.invoke(Method.java:511) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at dalvik.system.NativeStart.main(Native Method) 
    11-21 14:49:47.673: E/AndroidRuntime(2250): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 1418 cannot locate '_ZSt10unexpectedv'... 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.Runtime.loadLibrary(Runtime.java:370) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.System.loadLibrary(System.java:535) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:701) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacpp.Loader.load(Loader.java:578) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacpp.Loader.load(Loader.java:532) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:79) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  ... 15 more 
    11-21 14:49:47.673: E/AndroidRuntime(2250): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load gnustl_static: findLibrary returned null 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.Runtime.loadLibrary(Runtime.java:365) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at java.lang.System.loadLibrary(System.java:535) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:701) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  at com.googlecode.javacpp.Loader.load(Loader.java:569) 
    11-21 14:49:47.673: E/AndroidRuntime(2250):  ... 17 more 

after adding that jars from build path i have following exception 

11-21 15:02:05.232: E/AndroidRuntime(17814): FATAL EXCEPTION: main 
11-21 15:02:05.232: E/AndroidRuntime(17814): java.lang.ExceptionInInitializerError 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.example.demoproject.MainActivity.onCreate(MainActivity.java:23) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.os.Looper.loop(Looper.java:123) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at java.lang.reflect.Method.invokeNative(Native Method) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at java.lang.reflect.Method.invoke(Method.java:521) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at dalvik.system.NativeStart.main(Native Method) 
11-21 15:02:05.232: E/AndroidRuntime(17814): Caused by: java.lang.NoSuchMethodError: java.util.Arrays.copyOf 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.googlecode.javacpp.Loader.findLibrary(Loader.java:646) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.googlecode.javacpp.Loader.load(Loader.java:568) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.googlecode.javacpp.Loader.load(Loader.java:532) 
11-21 15:02:05.232: E/AndroidRuntime(17814): at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:79) 
11-21 15:02:05.232: E/AndroidRuntime(17814): ... 14 more 

你有什麼想法嗎? 謝謝

回答

0

我已經回答了您的問題here。 您可能還需要在armeabi文件夾中添加.so文件,而不僅僅是armeabi-v7a。 I had that problem但以相反的方式,我解決了這個問題。

順便說一句,您如何使用該功能?請記住,如果您不使用同一文件夾中的圖片,則必須輸入整個名稱(也包含目錄)。即使在這種情況下,我也會這樣做。

我不喜歡這樣,它的工作原理:

cvLoadImage("/storage/sdcard0/Download/testpicture.JPG"); 
+0

是的我試過這個,但得到了相同的異常intialization錯誤,我得到以下錯誤11-21 14:09:45.580:E/AndroidRuntime(23824) :導致:java.lang.UnsatisfiedLinkError:無法加載gnustl_static:findLibrary返回null,11-21 14:09:45.580:E/AndroidRuntime(23824):引起:java.lang.UnsatisfiedLinkError:無法加載庫:reloc_library [1285]:1418找不到'_ZSt10unexpectedv'...,你有什麼想法嗎? – bindal

+0

好的,我看過你的照片了,兩個jar都不應該出現在那裏,至少在整個過程之後他們不在我身邊。我想你會錯過這些步驟(剛開始時你已經將.jar確切地放在了現在的位置):1.導航到Project> Properties> Java Build Path> Libraries,然後單擊「Add JAR ...」。 2.從新創建的「libs」文件夾中選擇javacpp.jar和javacv.jar。 – serfe

+0

而且,它有效嗎? – serfe

0

只要把所有的*.so文件直接在您的項目libs/armeabi目錄中。不要把它們放在任何其他子目錄中,例如:libs/armeabi/com/googlecode/...