Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.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
Java 不能';“找不到”;libjniopencv_core.so“;_Java_Android_Opencv - Fatal编程技术网

Java 不能';“找不到”;libjniopencv_core.so“;

Java 不能';“找不到”;libjniopencv_core.so“;,java,android,opencv,Java,Android,Opencv,我正在用opencv开发一个android应用程序,我遇到了一个问题 我遇到的错误是: FATAL EXCEPTION: AsyncTask #3 Process: com.sogeti.innovation.obcapture, PID: 29681 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3

我正在用opencv开发一个android应用程序,我遇到了一个问题

我遇到的错误是:

FATAL EXCEPTION: AsyncTask #3
     Process: com.sogeti.innovation.obcapture, PID: 29681
     java.lang.RuntimeException: An error occurred while executing doInBackground()
         at android.os.AsyncTask$3.done(AsyncTask.java:309)
         at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
         at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
         at java.util.concurrent.FutureTask.run(FutureTask.java:242)
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
         at java.lang.Thread.run(Thread.java:818)
      Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.sogeti.innovation.obcapture-1/base.apk"],nativeLibraryDirectories=[/data/app/com.sogeti.innovation.obcapture-1/lib/arm, /data/app/com.sogeti.innovation.obcapture-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libjniopencv_core.so"
         at java.lang.Runtime.loadLibrary(Runtime.java:367)
         at java.lang.System.loadLibrary(System.java:1076)
         at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:804)
         at org.bytedeco.javacpp.Loader.load(Loader.java:613)
         at org.bytedeco.javacpp.Loader.load(Loader.java:530)
         at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
         at java.lang.Class.classForName(Native Method)
         at java.lang.Class.forName(Class.java:324)
         at org.bytedeco.javacpp.Loader.load(Loader.java:585)
         at org.bytedeco.javacpp.Loader.load(Loader.java:530)
         at org.bytedeco.javacpp.helper.opencv_core$AbstractArray.<clinit>(opencv_core.java:109)
         at com.sogeti.innovation.obcapture.bl.mobile.alg.ImageProcessingHelper.liveProcessImage(ImageProcessingHelper.java:46)
         at com.sogeti.innovation.obcapture.bl.LiveProcessImage.doInBackground(LiveProcessImage.java:35)
         at com.sogeti.innovation.obcapture.bl.LiveProcessImage.doInBackground(LiveProcessImage.java:21)
         at android.os.AsyncTask$2.call(AsyncTask.java:295)
         at java.util.concurrent.FutureTask.run(FutureTask.java:237)
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
         at java.lang.Thread.run(Thread.java:818) 
      Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.sogeti.innovation.obcapture-1/base.apk"],nativeLibraryDirectories=[/data/app/com.sogeti.innovation.obcapture-1/lib/arm, /data/app/com.sogeti.innovation.obcapture-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libopencv_imgproc.so"
         at java.lang.Runtime.loadLibrary(Runtime.java:367)
         at java.lang.System.loadLibrary(System.java:1076)
         at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:804)
         at org.bytedeco.javacpp.Loader.load(Loader.java:604)
         at org.bytedeco.javacpp.Loader.load(Loader.java:530) 
         at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10) 
         at java.lang.Class.classForName(Native Method) 
         at java.lang.Class.forName(Class.java:324) 
         at org.bytedeco.javacpp.Loader.load(Loader.java:585) 
         at org.bytedeco.javacpp.Loader.load(Loader.java:530) 
         at org.bytedeco.javacpp.helper.opencv_core$AbstractArray.<clinit>(opencv_core.java:109) 
         at com.sogeti.innovation.obcapture.bl.mobile.alg.ImageProcessingHelper.liveProcessImage(ImageProcessingHelper.java:46) 
         at com.sogeti.innovation.obcapture.bl.LiveProcessImage.doInBackground(LiveProcessImage.java:35) 
         at com.sogeti.innovation.obcapture.bl.LiveProcessImage.doInBackground(LiveProcessImage.java:21) 
         at android.os.AsyncTask$2.call(AsyncTask.java:295) 
         at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
         at java.lang.Thread.run(Thread.java:818)
这是设置.graddle文件:

include ':app', ":common", ":commonwidget", ":panowidget", ":base"
在我添加包“base”之前,一切都很正常

提前感谢您的帮助:D

编辑:多亏了@Prateek answer,我创建了JNILibs文件夹,然后添加了所需的.so文件。但是有一个问题,因为我没有所有需要的版本(arm64-v8a、armeabi、armeabi-v7a…),特别是关于我手机的版本。所以我试着从这里下载,但文件不是共享对象。所以是静态的。所以它不工作。。。有人能帮我吗?:)

解决方案:我只有32位版本的库文件“.so”。所以我所做的就是,像@Prateek所说的,将这些文件放在文件夹“JNILibs”的子文件夹“armeabi”、“armeabi-v7a”、“mips”和“x86”中。然后我通过在“build.graddle”应用程序文件中添加ndk规范来强制使用32位文件,如下所示

    android {
       compileSdkVersion 24
       buildToolsVersion '25.0.2'

       defaultConfig {
          applicationId "com.sogeti.innovation.obcapture"
          minSdkVersion 19
          targetSdkVersion 22
          versionCode 1
          versionName "1.0"
          multiDexEnabled true
          jackOptions {
             enabled false
             additionalParameters("jack.incremental" : "true")
          }

         ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
         }
       }
    }

希望它能帮助别人:)

你把libjniopencv_core.so文件放在JNI文件夹中了吗

我刚试过,现在错误变了,它说“由以下原因引起:java.lang.unsatifiedlinkerror:dlopen失败:”/data/app/com.sogeti.innovation.obcapture-1/lib/arm64/libjniopencv_core.so“是32位而不是64位”我认为“是”基数“我添加的包是64位的,但我的是32位的,或者类似的…嘿@Pratek,我想我理解版本问题,但现在还有一个问题,你能看看我的答案吗?”?谢谢:)如果你自己创建了android.mk文件,请共享这些文件的代码。我在jni文件夹中没有这样的文件
    android {
       compileSdkVersion 24
       buildToolsVersion '25.0.2'

       defaultConfig {
          applicationId "com.sogeti.innovation.obcapture"
          minSdkVersion 19
          targetSdkVersion 22
          versionCode 1
          versionName "1.0"
          multiDexEnabled true
          jackOptions {
             enabled false
             additionalParameters("jack.incremental" : "true")
          }

         ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
         }
       }
    }