想要在android中使用java绑定jnanomsg getting java.lang.ExceptionInInitializeError实现nanomsg吗

想要在android中使用java绑定jnanomsg getting java.lang.ExceptionInInitializeError实现nanomsg吗,java,android,jna,nanomsg,Java,Android,Jna,Nanomsg,我试图在android中实现nanomsg,我从以下链接获得了java绑定:在这个依赖项之后 编译'jnanomsg:jnanomsg:0.4.3'。它返回给我这个sun/jna/libjnidispatch.so没有找到 过了一段时间,我发现jna所需的“.so”文件丢失了,后来我从这个链接得到了所有必需的“.so” 之后,我将libjnidispatch.so文件复制到app/src/main/jniLibs/armeabi-v7a/libjnidispatch.so,然后 在编译应用程序之

我试图在android中实现nanomsg,我从以下链接获得了java绑定:在这个依赖项之后
编译'jnanomsg:jnanomsg:0.4.3'。它返回给我这个sun/jna/libjnidispatch.so没有找到

过了一段时间,我发现jna所需的“.so”文件丢失了,后来我从这个链接得到了所有必需的“.so”

之后,我将libjnidispatch.so文件复制到app/src/main/jniLibs/armeabi-v7a/libjnidispatch.so,然后

在编译应用程序之后,我通过System.loadLibrary(“JNIDSpatch”)加载了so文件。 当我尝试为
ReqSocket sock=new ReqSocket()创建对象时我收到以下错误:

java.lang.ExceptionInInitializerError
                  at nanomsg.Nanomsg.getSymbols(Nanomsg.java:35)
                  at nanomsg.Nanomsg.<clinit>(Nanomsg.java:48)
                  at nanomsg.Nanomsg$constants.<clinit>(Nanomsg.java:51)
                  at nanomsg.reqrep.ReqSocket.<init>(ReqSocket.java:13)
                  at com.example.nanomsg.onClick(MainActivity.java:125)
                  at android.view.View.performClick(View.java:5201)
                  at android.view.View$PerformClick.run(View.java:21163)
                  at android.os.Handler.handleCallback(Handler.java:746)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5443)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
                  Caused by: java.lang.IllegalStateException: The SecurityManager implementation on this platform is broken; you must explicitly provide the class to register
                  at com.sun.jna.Native.getCallingClass(Native.java:1295)
                  at com.sun.jna.Native.register(Native.java:1252)
                  at nanomsg.NativeLibrary.<clinit>(NativeLibrary.java:30)
                  at nanomsg.Nanomsg.getSymbols(Nanomsg.java:35) 
                  at nanomsg.Nanomsg.<clinit>(Nanomsg.java:48) 
                  at nanomsg.Nanomsg$constants.<clinit>(Nanomsg.java:51) 
                  at nanomsg.reqrep.ReqSocket.<init>(ReqSocket.java:13) 
                  at com.example.nanomsg.MainActivity.onClick(MainActivity.java:125) 
                  at android.view.View.performClick(View.java:5201) 
                  at android.view.View$PerformClick.run(View.java:21163) 
                  at android.os.Handler.handleCallback(Handler.java:746) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:148) 
                  at android.app.ActivityThread.main(ActivityThread.java:5443) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
java.lang.ExceptionInInitializeError
位于nanomsg.nanomsg.getSymbols(nanomsg.java:35)
在nanomsg.nanomsg.(nanomsg.java:48)
位于nanomsg.nanomsg$constants.(nanomsg.java:51)
在nanomsg.reqrep.ReqSocket.(ReqSocket.java:13)
位于com.example.nanomsg.onClick(MainActivity.java:125)
在android.view.view.performClick上(view.java:5201)
在android.view.view$PerformClick.run(view.java:21163)
位于android.os.Handler.handleCallback(Handler.java:746)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5443)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
原因:java.lang.IllegalStateException:此平台上的SecurityManager实现已中断;必须显式提供要注册的类
位于com.sun.jna.Native.getCallingClass(Native.java:1295)
位于com.sun.jna.Native.register(Native.java:1252)
nanomsg.nativelLibrary(nativelLibrary.java:30)
位于nanomsg.nanomsg.getSymbols(nanomsg.java:35)
在nanomsg.nanomsg.(nanomsg.java:48)
位于nanomsg.nanomsg$constants.(nanomsg.java:51)
在nanomsg.reqrep.ReqSocket.(ReqSocket.java:13)
在com.example.nanomg.MainActivity.onClick(MainActivity.java:125)上
在android.view.view.performClick上(view.java:5201)
在android.view.view$PerformClick.run(view.java:21163)
位于android.os.Handler.handleCallback(Handler.java:746)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5443)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

谁能帮我一下我犯了什么错误。
任何帮助都将不胜感激。

问题似乎在于没有类参数的
Native.register()
需要一个上下文类加载器,该加载器可以成功报告调用类。Android没有提供一个

否则,
Native.register()
要求您显式标识要注册的类。不幸的是,如果nanomsg定义的类的
寄存器
位于
静态
块中,甚至可能无法加载该类。您需要复制它们的类定义(可以是小的或大的)并注册自己的映射。或者让他们修补他们的
注册
呼叫以使用Android


另请参见。

使用系统属性运行
jna.debug_load=true
jna.debug_load.jna=true
以获取更多运行时加载信息。嗨,technomage,我编辑了我的帖子,请检查一下并感谢您的回复。这可能会有帮助:@rajesh-n:嘿,生成的代码在某个分支上可用吗?