【发布时间】:2018-09-12 18:29:45
【问题描述】:
我创建了两个 Spring Boot 项目。
一个是test 项目,另一个是我的working 项目
测试项目:
使用 System.load 我将 .dll 加载到目录 .dll 位于文件夹测试项目中
工作项目:
现在我正在尝试加载相同的 .dll .dll 放在我的工作文件夹中
所以每个项目都有自己的.dll
我总是出错:
java.lang.UnsatisfiedLinkError dir 已在另一个类加载器中加载
我必须从测试项目中“卸载”第一个 .dll 吗?
tomcat 是否在任何位置为我的测试项目会话加载 .dll,这样我就无法为我的工作项目再次加载 .dll?
或者
如何加载“已经加载”的库?
Exception in thread "restartedMain" java.lang.UnsatisfiedLinkError: Native Library C:\Dev\workspace\lightserver\src\main\libs\huesdk.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1907)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
【问题讨论】:
-
解决方案:我通过删除所有 .dll 文件解决了这个问题。查找您的类路径的位置并将 .dll 粘贴到那里。您可以通过使用 System.load 直接传递 .dll 来直接加载它。如果您使用类路径,请使用 System.loadLibrary("name of the library without .dll")
标签: java spring spring-boot tomcat