mvn install后生成jar。无法在 Windows 上使用 Loader.loadNativeLibraries()。
ortools的版本是9.0.9048。我在windows上用过。我将以下两个 jar 添加到项目中,并按照链接所述添加它们。
然后这两个jar就在IDEA的这里了。
pom文件如下:
然后我就可以在IDEA中正常运行程序了。但是当我 mvn install 生成 jar 文件并通过 'java -jar jarfile.jar' 运行 jar 时,出现错误:
它说 java.nio.file.NoSuchFileException: /BOOT-INF/lib/ortools-win32-9.0.jar!/win32-x86-64/ ,但是当我在 winrar 中打开 jar 时,它存在。
有谁知道原因吗?
Mac 版本的示例。
实际在 Java 中使用 ortools 时,您需要两个 jar,ortools-java-9.0.9048.jar并且ortools-darwin-x86-64-9.0.9048.jar. 这两个jar是从官方文件中解压出来的,位于主目录下。
ortools-java-9.0.9048.jar是你不需要太关心的算法包。您所需要做的就是向您的程序添加依赖项。
关键是ortools-darwin-x86-64-9.0.9048.jar. 下面的代码是读取这个jar最终调用里面的算法ortools-java-9.0.9048.jar:
import com.google.ortools.Loader;
Loader.loadNativeLibraries();
Run Code Online (Sandbox Code Playgroud)
它通常在 IDEA 中运行良好。但是当你将代码打包到jar文件时,会因为Loader.loadNativeLibraries();在.jar文件中找不到该文件而发生错误ortools-darwin-x86-64-9.0.9048.jar。
解决方案是解压ortools-darwin-x86-64-9.0.9048.jar并获取绝对路径libjniortools.dylib(如果您使用的是linux,它将是一个libjniortools.so与libjniortools.dllWindows中类似的文件)。并使用以下代码代替Loader.loadNativeLibraries();
System.load("Absolute path/libjniortools.dylib");
Run Code Online (Sandbox Code Playgroud)
用这种方法打包代码后就可以了。