首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在java.library.path上找到本机库

无法在java.library.path上找到本机库
EN

Stack Overflow用户
提问于 2022-07-11 16:56:01
回答 1查看 147关注 0票数 0

因此,我试图运行一个非常简单的java程序,在mac上使用IBM。程序识别JAR文件,但无论我指向何处,它似乎都找不到本机实现。

Java程序:

代码语言:javascript
运行
复制
import ilog.cplex.IloCplex;

public class CPLEXTester {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.library.path"));
        try {
            new IloCplex();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

以intellij表示的输出:

代码语言:javascript
运行
复制
/Users/bradley/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home/bin/java -Dvisualvm.id=27090629736541 -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=63865:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/bradley/Desktop/code/cplexTester/out/production/cplexTester:/Users/bradley/Desktop/code/adaje/code/lib/java/cplex-12.9.jar CPLEXTester
/Users/bradley/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
java.lang.UnsatisfiedLinkError: no cplex1290 in java.library.path: /Users/bradley/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
java.library.path must point to the directory containing the CPLEX shared library
try invoking java with java -Djava.library.path=...
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long ilog.cplex.Cplex.CPXopenCPLEX(int[])'
    at ilog.cplex.Cplex.CPXopenCPLEX(Native Method)
    at ilog.cplex.CplexI.init(CplexI.java:7083)
    at ilog.cplex.CplexI.<init>(CplexI.java:856)
    at ilog.cplex.IloCplex.<init>(IloCplex.java:12042)
    at ilog.cplex.IloCplex.<init>(IloCplex.java:12057)
    at CPLEXTester.main(CPLEXTester.java:7)

我尝试使用的CPLEX本机库位置是/ library /Java/Extensions。如下所示,目录中有libcplex1290.jnilib和libcplex1290.dylib:

Java只是不断地抛出UnsatisfiedLinkError。当我显式地尝试在zsh中链接和运行下面的命令时,我得到了相同的输出:

代码语言:javascript
运行
复制
java -Djava.library.path=/Library/Java/Extensions -cp ~/Desktop/code/lib/java/cplex-12.9.jar CPLEXTester.java

另一个有趣的注意是,当我尝试加载库时,即:

代码语言:javascript
运行
复制
public class CPLEXTester {
    public static void main(String[] args) {
        System.load("/Library/Java/Extensions/libcplex1290.jnilib");
    }
}

我得到了另一个UnsatisfiedLinkError:

代码语言:javascript
运行
复制
/Users/bradley/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home/bin/java -Dvisualvm.id=27158373972541 -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=63876:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/bradley/Desktop/code/cplexTester/out/production/cplexTester:/Users/bradley/Desktop/code/adaje/code/lib/java/cplex-12.9.jar CPLEXTester
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /Library/Java/Extensions/libcplex1290.jnilib
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2398)
    at java.base/java.lang.Runtime.load0(Runtime.java:785)
    at java.base/java.lang.System.load(System.java:1979)
    at CPLEXTester.main(CPLEXTester.java:5)

有没有人对如何解决这一问题有任何想法?提前谢谢你!

这是我的“关于这个Mac”:

Java基本设置:

代码语言:javascript
运行
复制
java -XshowSettings:properties -version
Property settings:
    file.encoding = UTF-8
    file.separator = /
    ftp.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
    http.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
    java.class.path = 
    java.class.version = 62.0
    java.home = /Users/bradley/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
    java.io.tmpdir = /var/folders/6w/qsmx4xpn7vs528v_7qvm_k9m0000gq/T/
    java.library.path = /Users/bradley/Library/Java/Extensions
        /Library/Java/Extensions
        /Network/Library/Java/Extensions
        /System/Library/Java/Extensions
        /usr/lib/java
        .
    java.runtime.name = OpenJDK Runtime Environment
    java.runtime.version = 18.0.1.1+2-6
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Oracle Corporation
    java.specification.version = 18
    java.vendor = Oracle Corporation
    java.vendor.url = https://java.oracle.com/
    java.vendor.url.bug = https://bugreport.java.com/bugreport/
    java.version = 18.0.1.1
    java.version.date = 2022-04-22
    java.vm.compressedOopsMode = Zero based
    java.vm.info = mixed mode, sharing
    java.vm.name = OpenJDK 64-Bit Server VM
    java.vm.specification.name = Java Virtual Machine Specification
    java.vm.specification.vendor = Oracle Corporation
    java.vm.specification.version = 18
    java.vm.vendor = Oracle Corporation
    java.vm.version = 18.0.1.1+2-6
    jdk.debug = release
    line.separator = \n 
    native.encoding = UTF-8
    os.arch = aarch64
    os.name = Mac OS X
    os.version = 12.4
    path.separator = :
    socksNonProxyHosts = local|*.local|169.254/16|*.169.254/16
    sun.arch.data.model = 64
    sun.boot.library.path = /Users/bradley/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home/lib
    sun.cpu.endian = little
    sun.io.unicode.encoding = UnicodeBig
    sun.java.launcher = SUN_STANDARD
    sun.jnu.encoding = UTF-8
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    sun.stderr.encoding = UTF-8
    sun.stdout.encoding = UTF-8
    user.country = US
    user.dir = /Users/bradley
    user.home = /Users/bradley
    user.language = en
    user.name = bradley

openjdk version "18.0.1.1" 2022-04-22
OpenJDK Runtime Environment (build 18.0.1.1+2-6)
OpenJDK 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
EN

回答 1

Stack Overflow用户

发布于 2022-07-12 05:29:30

看上去你在运行苹果的M1硅。我认为CPLEX还没有为那个忏悔者设置一个端口。鉴于CPLEX12.9是在2019年发布的,在苹果M1芯片发布前一年就发布了,我很确定CPLEX12.9不会在M1上运行。

IBM社区网站的一段话说:

我们只支持Mac上的英特尔芯片,不支持M1 arm64芯片。因此,要使CPLEX在您的机器上工作,您必须要求它使用模拟的英特尔模式,通过“-x86_64 -x86_64 make","arch -x86_64 gcc”.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72942063

复制
相关文章

相似问题

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