[英]UnsatisfiedLinkError - Accessing dll files from jar file
我正在使用Netbeans开发Swing应用程序。我正在为我的应用程序使用dll文件 。 我用下面的代码。 它在IDE中运行完美。
但是在清理并在IDE中构建后从jar文件运行时,它显示以下错误。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no win32com in java.l
ibrary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at test.Test.main(Test.java:78)
我的代码来设置路径。
private static void setPath() {
try {
System.setProperty("java.library.path", "./lib/win32/");
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);
} catch (IllegalAccessException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchFieldException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalArgumentException e) {
}
}
我的主要方法
...
setPath();
try {
System.loadLibrary("win32com");
} catch (Exception e) {
System.out.println(e);
}
还有我的文件夹结构
要通过java code()访问dll文件,必须执行以下操作
(以我为例,获取通讯端口列表并与其中一个建立连接)
虽然效果很好,但是当您将其导出到Jar中并尝试在其他计算机上执行该操作时,仍然必须确保dll和properties文件是否位于其适当位置。
但是,作为替代,如果您将dll放置在另一个位置,则必须在导出到Jar文件之前将库路径设置为VM选项。
在Netbeans中,单击Project->右键单击Properties->选择Run->提供VM选项,例如
-Djava.library.path="D:\My Project\lib\win32"
(如果dll文件位于D:\\ My Project \\ lib \\ win32中)
另外, 除了使用javax.com.properties文件之外,您还可以加载驱动程序,例如
String driverName = "com.sun.comm.Win32Driver";
CommDriver commdriver = (CommDriver) Class.forName(driverName).newInstance();
commdriver.initialize();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.