无法从加载器 dalvik.system 加载 alljoyn_java
Posted
技术标签:
【中文标题】无法从加载器 dalvik.system 加载 alljoyn_java【英文标题】:Couldn't load alljoyn_java from loader dalvik.system 【发布时间】:2016-12-11 16:18:51 【问题描述】:我正在使用 Alljoyn 框架创建一个聊天应用程序,并且收到以下错误,请有人帮助我。 alljoyn jar 已经设置好了!!!
FATAL EXCEPTION: main
Process: com.example.vikesh.chat_application, PID: 4326
java.lang.UnsatisfiedLinkError: Couldn't load alljoyn_java from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.vikesh.chat_application-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.vikesh.chat_application-1, /vendor/lib, /system/lib]]]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:526)
at com.example.vikesh.chat_application.AlljoynService.<clinit>(AlljoynService.java:1252)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2553)
at android.app.ActivityThread.access$1800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
【参考方案1】:您需要将 AllJoyn liballjoyn_java.so 文件放入您的项目中。 例如,在 Android Studio 中,此文件的通常位置是: [your_project_dir]/app/src/main/jniLibs/armeabi/
上述路径的 armeabi 部分假设您之前构建的 AllJoyn .so 文件针对“arm” CPU(armeabi 指令集)。
注意:当我从我的应用程序中删除 .so 文件时,我收到了与您报告的相同的错误。当我把 .so 文件放回去时,我仍然遇到同样的错误。我必须从我的 Android 设备上卸载该应用程序,并在 Android Studio 中清理并重建该应用程序,然后才能克服此错误。
其他一些需要考虑的事情......
确保在您的应用中您正在调用
static
System.loadLibrary("alljoyn_java");
确保您之前构建的 liballjoyn_java.so 与您的 Android 设备的 cpu 指令集匹配。例如,您可以使用 Droid Info 等应用程序验证您的 Android 指令集。假设是armeabi,那么在你构建AllJoyn核心项目的时候,你需要在scons build命令中至少指定以下开关......
scons BINDINGS="cpp,java,c" OS=android CPU=arm VARIANT=release
最后,以下 *** 链接讨论了您看到的错误可能发生的一般原因: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
【讨论】:
这是 Alljoyn libllijoyn_java.so 的当前位置,它实际上已经在 "C:\Users\vikesh\Desktop\Final Year Project\Source_Code\Chat_Application\app\src 的项目文件中\main\jniLibs\armeabi" 非常感谢先生的回答 @ P. Sigurdson :你好先生,我在我的项目中使用了 jingle_peerconnection_so.so 文件,我遇到了同样的错误,我在 jnilib 中创建了所有文件夹,但在三星 Galaxy Tab 7 中仍然存在问题"(SM- T311) .所以请告诉我有什么问题?以上是关于无法从加载器 dalvik.system 加载 alljoyn_java的主要内容,如果未能解决你的问题,请参考以下文章
无法从类加载器中找到 QueryDsl JPAQueryFactory
错误记录Android 应用执行报错 ( java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ )