Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android项目中的java.lang.ExceptionInInitializerError_Android_Opencv_Android Ndk_Java Native Interface - Fatal编程技术网

Android项目中的java.lang.ExceptionInInitializerError

Android项目中的java.lang.ExceptionInInitializerError,android,opencv,android-ndk,java-native-interface,Android,Opencv,Android Ndk,Java Native Interface,我正在尝试创建一个Android应用程序,它可以录制视频,并在录制过程中捕获帧以进行处理。 但是,当我尝试在模拟器上运行我的应用程序时(使用Eclipse Juno、OpenCV4Android版本2.4.5和android ndk),我的日志中会出现以下结果: 05-13 18:15:34.555: D/dalvikvm(1595): Trying to load lib /data/app-lib/com.example.provavideocapture-1/libjniVideoCapt

我正在尝试创建一个Android应用程序,它可以录制视频,并在录制过程中捕获帧以进行处理。 但是,当我尝试在模拟器上运行我的应用程序时(使用Eclipse Juno、OpenCV4Android版本2.4.5和android ndk),我的日志中会出现以下结果:

05-13 18:15:34.555: D/dalvikvm(1595): Trying to load lib /data/app-lib/com.example.provavideocapture-1/libjniVideoCapture.so 0x40ce89b0
05-13 18:15:34.555: E/dalvikvm(1595): dlopen("/data/app-lib/com.example.provavideocapture-1/libjniVideoCapture.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_java.so" needed by "libjniVideoCapture.so"; caused by load_library(linker.cpp:745): library "libopencv_java.so" not found
05-13 18:15:34.555: W/dalvikvm(1595): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/example/provavideocapture/MainActivity;
05-13 18:15:34.555: W/dalvikvm(1595): Class init failed in newInstance call (Lcom/example/provavideocapture/MainActivity;)
05-13 18:15:34.555: D/AndroidRuntime(1595): Shutting down VM
05-13 18:15:34.555: W/dalvikvm(1595): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
05-13 18:15:34.575: E/AndroidRuntime(1595): FATAL EXCEPTION: main
05-13 18:15:34.575: E/AndroidRuntime(1595): java.lang.ExceptionInInitializerError
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.Class.newInstanceImpl(Native Method)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.Class.newInstance(Class.java:1319)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.os.Looper.loop(Looper.java:137)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at android.app.ActivityThread.main(ActivityThread.java:5041)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.reflect.Method.invokeNative(Native Method)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.reflect.Method.invoke(Method.java:511)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at dalvik.system.NativeStart.main(Native Method)
05-13 18:15:34.575: E/AndroidRuntime(1595): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_java.so" needed by "libjniVideoCapture.so"; caused by load_library(linker.cpp:745): library "libopencv_java.so" not found
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.Runtime.loadLibrary(Runtime.java:371)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at java.lang.System.loadLibrary(System.java:535)
05-13 18:15:34.575: E/AndroidRuntime(1595):     at com.example.provavideocapture.MainActivity.<clinit>(MainActivity.java:21)
05-13 18:15:34.575: E/AndroidRuntime(1595):     ... 15 more
2) jniVideoCapture.cpp

#include <jni.h>
#include <string.h>
#include <android/log.h>
#include <opencv2/opencv.hpp>

extern "C" {
JNIEXPORT jstring JNICALL Java_com_example_provavideocapture_MainActivity_stringFromJNICPP(JNIEnv * env, jobject obj);
};

    JNIEXPORT jstring JNICALL Java_com_example_provavideocapture_MainActivity_stringFromJNICPP(JNIEnv * env, jobject obj){

/*VideoCapture cap(0); //open the default camera
if (!cap.isOpened()) //check if we succedeed
    return -1;

Mat edges;
namedWindow("edges",1);
for(;;){
    Mat frame;
    cap>>frame;
    cvtColor(frame,edges,CV_BGR2GRAY);
    GaussianBlur(edges,edges,Size(7,7),1.5,1.5);
    Canny(edges,edges,0,30,3);
    imshow("edges",edges);
    if(waitKey(30)>=0) break;
}*/
return env->NewStringUTF("Hello From CPP");

}
我尝试在项目的dir libs中手动复制libopencv_java.so库,从opencv教程项目中获取它,并在MainActivity中使用jniVideoCapture加载它,但没有更好的结果,因为当我运行项目时,库会自动从libs/中删除

如何解决此问题?

只需添加行:

OPENCV_LIB_TYPE:=STATIC
紧接着:

include $(CLEAR_VARS)

您刚才没有将opencv库(静态)链接到您的项目-这是一个错误。

请检查我的答案。应该会有帮助的。是的,谢谢你的帮助。
OPENCV_LIB_TYPE:=STATIC
include $(CLEAR_VARS)