运行分布式jar时运行java.lang.UnsatisfiedLinkError

时间:2013-05-28 22:09:21

标签: java dll unsatisfiedlinkerror

我的应用程序从NetBeans运行良好,但分布式jar文件存在问题。

我已经阅读了许多类似的帖子而没有任何运气。

感谢任何想法如何解决这个问题!

C:\Users\dennis>java -jar "C:\Users\dennis\Documents\JavaApplication1\dist\JavaApplication1.jar"
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Native library not found. Tried to load tibrvnativesd64 and tibrvnativesd
        at com.tibco.tibrv.Tibrv.loadNativeLibrary(Tibrv.java:392)
        at com.tibco.tibrv.Tibrv.<clinit>(Tibrv.java:79)
        at COM.TIBCO.hawk.console.nest.shared.TibrvProxy.open(TibrvProxy.java:33)
        at COM.TIBCO.hawk.console.hawkeye.AgentMonitor.initialize(AgentMonitor.java:342)
        at javaapplication1.TrayIconDemo.createHawkConsole(TrayIconDemo.java:122)
        at javaapplication1.TrayIconDemo.access$100(TrayIconDemo.java:15)
        at javaapplication1.TrayIconDemo$1.run(TrayIconDemo.java:52)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$000(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: C:\tibco\tibrv\8.4\bin\tibrvnativesd.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at com.tibco.tibrv.Tibrv.loadNativeLibrary(Tibrv.java:389)
        ... 20 more

2 个答案:

答案 0 :(得分:0)

这个tibrvnativesd.dll文件显然是为32位机器/操作系统创建的,而试图加载它的应用程序运行的机器是64位机器/操作系统。

找到/创建64位可编码的dll或在32位机器上运行它...

答案 1 :(得分:0)

我找到了解决这个问题的方法,非常简单。

就我而言,NetBeans使用的是java 32bit,但命令提示符默认使用java 64版本。

当我在命令提示符中明确指出java 32位时,它工作正常。