我的 Java 程序在 Windows 上失败并出现以下错误。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no XSvcSocket in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
我尝试了不同的东西,比如
- 将 DLL 的位置添加到系统的路径环境变量
在程序中明确设置 DLL 的位置,如下所示
String libpath = System.getProperty("java.library.path"); libpath = "C:\\extlibs;" + libpath; System.setProperty("java.library.path", libpath); libpath = System.getProperty("java.library.path");
我看到的 java.library.path 如下所示。
"Lib Path: C:\extlibs;C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows"
有问题的 DLL 在“C:\extlibs”中可用。有几个观察结果是,当我将 DLL 放入“C:\Program Files\Java\jre6\bin”时,我的程序并不依赖 DLL(即加载它),但我必须处理许多其他 DLL也。
任何人都可以阐明这种行为吗?顺便说一句,我也无法弄清楚 eclipse 从哪里选择 C:\Program Files\Java\jre6\bin 并添加到 java.library.path?它不是系统路径环境变量的一部分。