我依赖于我需要在运行时加载的库src/main/resources/libs64/thelib.dll
System.setProperty("java.library.path",
Paths.get(System.getProperty("user.dir"),
"src", "main", "resources", "libs64").toAbsolutePath().toString())
当我运行spring boot app
时mvn package
java -jar springapp.jar
我告诉我
java.lang.UnsatisfiedLinkError: no src/main/resources/libs64/thelib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[na:1.8.0_92]
at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[na:1.8.0_92]
at java.lang.System.loadLibrary(System.java:1122) ~[na:1.8.0_92]
当我在Eclipse中设置库路径src/main/resources/libs64
时,它可以工作,java.library.path
打印出来与
Paths.get(System.getProperty("user.dir"),
"src", "main", "resources", "libs64").toAbsolutePath().toString())
感谢您的帮助
答案 0 :(得分:1)
using (var compressedStream = new GZipStream(rawStream, CompressionLevel.Fastest))
using (var encodedStream = new CryptoStream(compressedStream, new ToBase64Transform(), CryptoStreamMode.Read))
{
await UploadFile(encodedStream);
}
是Eclipse项目中库的路径。在没有Eclipse工作区的系统上,这将永远不会起作用。
当您将应用程序打包到Jar中时,库(作为资源)将被复制到该jar中,位于路径src/main/resources/libs64
下方的某个位置。
AFAIK Java无法加载驻留在zip / jar文件中的库。因此你必须提取到例如到temp目录然后从那里加载它。或者,您不必将库打包到Jar文件中,只需将其部署到JAR文件旁边即可。然后,您可以直接从JAR文件的安装位置加载它。