加载本机库错误
Posted
技术标签:
【中文标题】加载本机库错误【英文标题】:Loading native lib error 【发布时间】:2017-03-06 19:03:46 【问题描述】:我在 linux 上启动我的应用程序时遇到问题,从 IDE 和直接从 win everthink 是可以的,但在 linux 上我收到以下错误:
native lib Version = RXTX-2.2pre2
mar 06, 2017 7:54:44 PM org.jnativehook.DefaultLibraryLocator getLibraries
SEVERE: Unable to extract the native library /org/jnativehook/lib/linux/arm/libJNativeHook.so!
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: org.jnativehook.GlobalScreen.getAutoRepeatRate()Ljava/lang/Integer;
at org.jnativehook.GlobalScreen.getAutoRepeatRate(Native Method)
at org.jnativehook.GlobalScreen.<clinit>(Unknown Source)
at the.main.pac.TheModbusSimpleTesterWindow$1.run(TheModbusSimpleTesterWindow.java:74)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
提前感谢您的帮助
【问题讨论】:
该库是否适用于正确的处理器架构? 您是否尝试过它是否适用于 JNativeHook 2.1.0? 2.2pre2 看起来像一个预发布版本,可能包含错误,应该针对 JNativeHook 报告。 "2.2pre2" 涉及我正在使用的其他库 - "rxtx" 我不确定是否支持架构 - 我正在尝试在 RPi3 上启动它 【参考方案1】:如果在 java.library.path 属性上找不到库,则库会尝试从 Jar 中提取原始代码。如果要重新打包 Jar,则必须将库打包到 Jar 中的同一位置并完全遵守项目的 GPL 许可。该库必须作为独立库包含以符合使用 Lesser-GPL。您可以通过实现NativeLibraryLocator 接口来指定不同的库加载方法或位置。有关实现示例,请参阅DefaultLibraryLocator。
【讨论】:
以上是关于加载本机库错误的主要内容,如果未能解决你的问题,请参考以下文章
libGDX / roboVM:如何修复“已在另一个类加载器中加载的本机库libhfscompressor.dylib”?