如何启动使用Cmd中预编译的DLL的Java Swing应用程序? [英] How to launch java swing app which used precompled DLL from cmd?
问题描述
当我使用双击时,我的Java应用会完美启动。
我的路径:
When i'm using double click my java app starts perfectly. My path:
PATH=...C:\Program Files\Java\jdk1.7.0_02\bin;...
但是当我从cmd运行应用程序时:
But when i'm running app from cmd:
C:\Program Files\Java\jdk1.7.0_02\bin>java.exe -jar C:\Users\zagorulkinde\Docume
nts\ps_client_lib\bin\Win32\GUItest.jar
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Window
s\System32\pc_client_lib.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(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at PC_client.lib.<clinit>(lib.java:10)
at settings.load(GUItest.java:342)
at GUItest.createAndShowGUI(GUItest.java:2681)
at GUItest.access$4100(GUItest.java:851)
at GUItest$22.run(GUItest.java:2728)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我正在尝试使用x86 Java版本运行:
i am trying to run with x86 java version:
C:\Program Files (x86)\Java\jdk1.7.0_09\bin>java.exe -jar C:\Users\zagorulkinde\
Documents\ps_client_lib\bin\Win32\GUItest.jar
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no PC_cli
ent_lib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at PC_client.lib.<clinit>(lib.java:10)
at settings.load(GUItest.java:342)
at GUItest.createAndShowGUI(GUItest.java:2681)
at GUItest.access$4100(GUItest.java:851)
at GUItest$22.run(GUItest.java:2728)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
如果我要指定dll:
C:\Program Files (x86)\Java\jdk1.7.0_09\bin>java.exe -Djava.library.path="C:\Use
rs\zagorulkinde\Documents\ps_client_lib\bin\Win32\Pc_client_lib.dll" -jar C:\Use
rs\zagorulkinde\Documents\ps_client_lib\bin\Win32\GUItest.jar
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no PC_cli
ent_lib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at PC_client.lib.<clinit>(lib.java:10)
at settings.load(GUItest.java:342)
at GUItest.createAndShowGUI(GUItest.java:2681)
at GUItest.access$4100(GUItest.java:851)
at GUItest$22.run(GUItest.java:2728)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
我在做什么错?
推荐答案
1。)-Djava.library.path指定本地的 path 库是实时的,它没有指定库本身。 (即-取出文件名,将其更改为 -Djava.library.path = C:\Use
)
rs\zagorulkinde\Documents\ps_client_lib\bin\Win32 \
1.) -Djava.library.path specifies the path to where native libraries live, it doesn't specify the libraries themselves. (i.e. - take the filename out, change it to -Djava.library.path="C:\Use
rs\zagorulkinde\Documents\ps_client_lib\bin\Win32\"
)
2。)区分大小写可能是一个问题-您将文件引用为 Pc_client_lib.dll,并且 PC_client_lib在不同的位置。确保在 loadLibrary
中使用的名称与实际的.DLL文件名具有相同的大小写。
2.) Case-sensitivity might be an issue - you're referencing the file as "Pc_client_lib.dll" and "PC_client_lib" in different places. Make sure the name you use in loadLibrary
has the same case as the actual .DLL file name.
这篇关于如何启动使用Cmd中预编译的DLL的Java Swing应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!