在mvn安装后生成jar。不能在窗口上Loader.loadNativeLibraries()。
ortools的版本为9.0.9048。我用在窗户上。我将以下两个jar添加到项目中,并按照link的要求添加了它们。
然后两个罐子在这里的想法。
pom文件如下:
然后我就可以正常运行这个程序了。但是,当我安装mvn以生成jar文件并通过'java -jar jarfile.jar‘运行jar时,它的错误如下:
上面写着/BOOT-INF/lib/ortools-win32-9.0.jar!/win32-x86-64/,:java.nio.file.NoSuchFileException,但是当我在winrar中打开jar时,它就存在了。
有人知道原因吗?
发布于 2021-06-24 07:07:24
Mac版本的一个例子。
在Java中使用ortools时需要两个jars -实际上是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();
在思想上通常效果很好。但是,当您将代码打包到jar文件时,会发生错误,因为Loader.loadNativeLibraries();
无法在ortools-darwin-x86-64-9.0.9048.jar
中找到该文件。
解决方案是解压缩ortools-darwin-x86-64-9.0.9048.jar
并获得libjniortools.dylib
的绝对路径(如果您使用的是linux,它将是一个类似于libjniortools.so
的文件,以及一个类似于libjniortools.dll
的文件)。并使用下面的代码代替Loader.loadNativeLibraries();
System.load("Absolute path/libjniortools.dylib");
使用此方法打包代码后,它将工作。
发布于 2021-06-09 08:38:07
官方文物有:
组: com.google.ortools,工件: ortools-java
https://search.maven.org/artifact/com.google.ortools/ortools-java/9.0.9048/jar
发布于 2021-10-08 16:44:26
对于macOS,您可以尝试以下代码,类似于@Muz解决方案
public static void loadOrToolLibrary() {
String os = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH);
if (os.equals("mac os x")) { // only for MAC local
File file = new File("src/main/resources/macosLocal/libjniortools.dylib");
String absolutePath = file.getAbsolutePath();
System.load(absolutePath);
} else {
Loader.loadNativeLibraries();
}
}
https://stackoverflow.com/questions/67899874
复制相似问题