首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法执行jar的ortools项目,Loader.loadNativeLibraries()错误

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

Stack Overflow用户
提问于 2021-06-09 07:54:13
回答 3查看 1K关注 0票数 2

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

有人知道原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-24 07:07:24

Mac版本的一个例子。

在Java中使用ortools时需要两个jars -实际上是ortools-java-9.0.9048.jarortools-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中的算法

代码语言:javascript
运行
复制
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();

代码语言:javascript
运行
复制
System.load("Absolute path/libjniortools.dylib");

使用此方法打包代码后,它将工作。

票数 3
EN

Stack Overflow用户

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2021-10-08 16:44:26

对于macOS,您可以尝试以下代码,类似于@Muz解决方案

代码语言:javascript
运行
复制
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();
        }
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67899874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档