无法执行ortools项目的jar,Loader.loadNativeLibraries()错误

gar*_*ong 4 java or-tools

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 时,它存在。

在此输入图像描述

有谁知道原因吗?

gar*_*ong 5

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.solibjniortools.dllWindows中类似的文件)。并使用以下代码代替Loader.loadNativeLibraries();

System.load("Absolute path/libjniortools.dylib");
Run Code Online (Sandbox Code Playgroud)

用这种方法打包代码后就可以了。