我的java Spring Boot项目中有一个C ++ .dll
。
一切看起来不错,并且在以下情况下调用.dll
中的方法:
mvn pack & java -jar target/Project-0.0.1-SNAPSHOT.jar
编译文件我试图将项目复制到另一台机器上,但出现此问题:
当我从IDE运行应用程序时,一切正常
当我在项目mvn pack & java -jar target/Project-0.0.1-SNAPSHOT.jar
上运行相同的命令时,它被称为.dll
方法,它崩溃并显示消息错误:
java.lang.UnsatisfiedLinkError: The specified module could not be found.
at com.sun.jna.Native.open(Native Method) ~[jna-4.1.0.jar!/:4.1.0 (b4)]
at com.sun.jna.Native.open(Native.java:1759) ~[jna-4.1.0.jar!/:4.1.0 (b4)]
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260) ~[jna-4.1.0.jar!/:4.1.0 (b4)]
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398) ~[jna-4.1.0.jar!/:4.1.0 (b4)]
at com.sun.jna.Library$Handler.<init>(Library.java:147) ~[jna-4.1.0.jar!/:4.1.0 (b4)]
at com.sun.jna.Native.loadLibrary(Native.java:412) ~[jna-4.1.0.jar!/:4.1.0 (b4)]`.
注意:我在两台计算机上都有Microsoft Visual C ++ 2017 Redistributable。
如果我将.dll文件移动到项目根目录中,它将起作用。
答案 0 :(得分:0)
您正在项目内部使用JNA。 JNA需要正确安装一些本机库。例如。 Windows平台需要jnidispatch.dll
。
对于您的情况,您需要下载所需的本机库,例如https://github.com/java-native-access/jna/blob/master/lib/native/win32,并将其放到您的JAVA可以在其中搜索的目录中。