首页 > 解决方案 > UVCCamera 错误: registerNativeMethods: class'com/serenegiant/usb/UVCCamera' not found

问题描述

我尝试 loadLibrary UVCCamera,但是ClassNotFoundException当我连接设备时得到。

ClassNotFoundException是找不到UVCCamera.so?或者找不到方法或类UVCCamera?或者我哪里出了问题?

我应该尝试哪个方向?或者我错过了哪一步?谢谢。

2019-02-14 16:55:27.603 30921-30940/? E/libUVCCamera: [serenegiant_usb_UVCCamera.cpp:250:registerNativeMethods]:registerNativeMethods: class'com/serenegiant/usb/UVCCamera' not found
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.serenegiant.usb.UVCCamera" on path: DexPathList[[zip file "/data/app/com.vitiny.vitinyreader2-1/base.apk"],nativeLibraryDirectories=[/data/app/com.vitiny.vitinyreader2-1/lib/arm, /data/app/com.vitiny.vitinyreader2-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:1060)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.String) (Runtime.java:975)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void java.lang.System.loadLibrary(java.lang.String) (System.java:1567)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void com.vitiny.vitinyreader2.usb.UVCCamera.<clinit>() (UVCCamera.java:60)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void com.vitiny.vitinyreader2.USBWebCam.CameraHandler$CameraThread.handleOpen(com.vitiny.vitinyreader2.usb.USBMonitor$UsbControlBlock) (CameraHandler.java:279)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void com.vitiny.vitinyreader2.USBWebCam.CameraHandler.handleMessage(android.os.Message) (CameraHandler.java:144)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void android.os.Looper.loop() (Looper.java:154)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at void com.vitiny.vitinyreader2.USBWebCam.CameraHandler$CameraThread.run() (CameraHandler.java:566)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470] 
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]     in call to NewGlobalRef
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]     from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470] "CameraThread" prio=5 tid=15 Runnable
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   | group="main" sCount=0 dsCount=0 obj=0x12c47580 self=0xa2ed3000
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   | sysTid=30940 nice=0 cgrp=default sched=0/0 handle=0x90d95920
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   | state=R schedstat=( 3585209 1942552 10 ) utm=0 stm=0 core=0 HZ=100
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   | stack=0x90c93000-0x90c95000 stackSize=1038KB
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   | held mutexes= "mutator lock"(shared held)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #00 pc 0034f5b5  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #01 pc 0032ff71  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+308)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #02 pc 00239155  /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+848)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #03 pc 00239677  /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+58)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #04 pc 000ca47b  /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+46)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #05 pc 000ca067  /system/lib/libart.so (_ZN3art11ScopedCheck11CheckThreadEP7_JNIEnv+362)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #06 pc 000c907f  /system/lib/libart.so (_ZN3art11ScopedCheck22CheckPossibleHeapValueERNS_18ScopedObjectAccessEcNS_12JniValueTypeE+26)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #07 pc 000c855b  /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE+802)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #08 pc 000cb229  /system/lib/libart.so (_ZN3art8CheckJNI6NewRefEPKcP7_JNIEnvP8_jobjectNS_15IndirectRefKindE+452)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #09 pc 00335b81  /system/lib/libart.so (_ZN3art6Thread22SetClassLoaderOverrideEP8_jobject+32)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #10 pc 0023b11b  /system/lib/libart.so (_ZN3art9JavaVMExt17LoadNativeLibraryEP7_JNIEnvRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEP8_jobjectP8_jstringPS9_+1878)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #11 pc 00003167  /system/lib/libopenjdkjvm.so (JVM_NativeLoad+178)
2019-02-14 16:55:27.636 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   native: #12 pc 0007118d  /system/framework/arm/boot.oat (Java_java_lang_Runtime_nativeLoad__Ljava_lang_String_2Ljava_lang_ClassLoader_2Ljava_lang_String_2+144)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Runtime.nativeLoad(Native method)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Runtime.doLoad(Runtime.java:1060)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   - locked <0x0c2d04f6> (a java.lang.Runtime)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.Runtime.loadLibrary0(Runtime.java:975)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   - locked <0x0c2d04f6> (a java.lang.Runtime)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at java.lang.System.loadLibrary(System.java:1567)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at com.vitiny.vitinyreader2.usb.UVCCamera.<clinit>(UVCCamera.java:60)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at com.vitiny.vitinyreader2.USBWebCam.CameraHandler$CameraThread.handleOpen(CameraHandler.java:279)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at com.vitiny.vitinyreader2.USBWebCam.CameraHandler.handleMessage(CameraHandler.java:144)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at android.os.Handler.dispatchMessage(Handler.java:102)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at android.os.Looper.loop(Looper.java:154)
2019-02-14 16:55:27.637 30921-30940/? A/art: art/runtime/java_vm_ext.cc:470]   at com.vitiny.vitinyreader2.USBWebCam.CameraHandler$CameraThread.run(CameraHandler.java:566)

标签: androidandroid-ndkloadlibrary.so

解决方案


2019-02-14 16:55:27.603 30921-30940/? E/libUVCCamera: [serenegiant_usb_UVCCamera.cpp:250:registerNativeMethods]:registerNativeMethods: 类'com/serenegiant/usb/UVCCamera' 未找到

您需要包含 Java 部分,即.jar,它对应于您的共享库,即libUVCCamera.so.

本机函数registerNativeMethods尝试查找 Java 类com/serenegiant/usb/UVCCamera并将其注册为 JNI 方法,因此您必须确保该类在 Java 端可用。


推荐阅读