有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的错误。图书馆从Matlab调用使用Cplex的Java函数时的路径

我想从Matlab调用一个使用Cplex的Java函数。 此刻,我被困住了。下面是我尝试过的事情列表,但我没有主意。在到达之前,让我列出以下版本:

  1. Matlab版本8.3.0.532(R2014a)
  2. Java 1.7.0_11-b21与Oracle Corporation Java HotSpot(TM)64位服务器虚拟机混合模式
  3. 使用jre7和jdk1的Eclipse。7.0_79

我创建了一个包“milp.jar”,并尝试从Matlab调用以下函数:

milp.MTsolver.Plan() 

在我的milp的基本版本中。jar,没有任何Cplex功能,这是没有问题的。就在我在Java类中使用Cplex函数时,我遇到了麻烦。我尝试了以下方法:

为了能够使用Cplex,我将路径添加到javaclasspath。Matlab文件夹中的txt文件

prefdir 

命令

javaclasspath 

在Matlab控制台中确实显示了该路径被添加到静态Java路径中。 但是,当调用依赖于cplex的函数milp时。姆索尔弗。Plan(),我得到以下错误:

Java exception occurred:
java.lang.UnsatisfiedLinkError: no cplex1262 in java.library.path
java.library.path must point to the directory containing the CPLEX shared library
try invoking java with java -Djava.library.path=...

在此post之后,我应该首先加载库:

java.lang.System.load('C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar');

但这会产生以下错误:

Java exception occurred:
java.lang.UnsatisfiedLinkError: C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar: %1 is not a valid Win32 application

在他看来,我尝试了另一种方法。我只是复制了cplex。将jar放入Matlab根文件夹。没有成功。复制cplex时也不会成功。jar在Matlab的项目文件夹中

然后,我试图找到一个cplex1262。jar,但我只找到了一个cplex1262。dll。因此,我将此路径添加到静态Java路径中。这会产生以下错误:

Java exception occurred:
java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J

在Matlab控制台中运行以下命令时,也会出现相同的错误:

java.lang.System.load('C:\Program Files\IBM\ILOG\CPLEX_Studio1262\opl\oplide\plugins\ilog.odms.ide.opllang.win32.win32.x86_64_12.6.2.0\cplex1262.dll');

最后一件我可以尝试的事情来自于这个post中的一个答案。 在这里,他开始了

-Djava.library.path=... 

在VM选项字段中,但在Netbeans中。我可以尝试在Matlab中做类似的事情,但我还没有弄清楚如何做。 最后,我刚刚添加了包含cplex的目录。jar和cplex1262。指向PATH环境变量的dll。那里也没有运气

另一个重要的注意事项可能是,我在Eclipse中运行代码没有问题,包括Cplex功能!还值得一提的是,在更改之间,我重新启动了Matlab,以确保路径设置中的所有更改都生效

我希望把我的问题说清楚。欢迎对如何进行提出任何建议


共 (1) 个答案

  1. # 1 楼答案

    我找到了一个快速而肮脏的解决方案,现在还可以。 首先,我尝试将路径添加到包含cplex1262的目录中。dll到 “爪哇。图书馆“路径”如下所示:

    java.lang.System.setProperty('java.library.path', [path to dir])
    

    但这对我不起作用。用下面的命令,我快速而肮脏地查找该属性中已经包含的路径

    >> java.lang.System.getProperty('java.library.path')
    
    ans =
    
    C:\Program Files\MATLAB\R2014a\bin\win64;C:\Program Files\MATLAB\R2014a\sys\jxbrowser\win64\lib
    

    只需复制/粘贴cplex1262即可。\lib目录中的dll

    成功了