我想从Matlab调用一个使用Cplex的Java函数。 此刻,我被困住了。下面列出了我尝试过的一些事情,但我没有想法。在我到达那里之前,让我列出一下版本:
我创建了一个包“milp.jar”并尝试从Matlab调用以下函数:
milp.MTsolver.Plan()
在我的milp.jar的基本版本中,没有任何Cplex功能,这没有问题。只要我在Java类中使用Cplex函数,就会遇到麻烦。我尝试了以下方法:
为了能够使用Cplex,我在Matlab文件夹中添加了javaclasspath.txt文件的路径
prefdir
命令
javaclasspath
Matlab控制台中的确实显示此路径已添加到静态Java路径中。 但是,当调用我的cplex依赖函数milp.MTsolver.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根文件夹中。没有成功。在Matlab中复制项目文件夹中的cplex.jar时也没有任何成功。
然后,我试图找到一个cplex1262.jar,但我只找到了一个cplex1262.dll。所以我将此路径添加到Static Java Path。这会出现以下错误:
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=...
另一个重要的注意事项可能是我在Eclipse中运行代码没有问题,包括Cplex功能!值得一提的是,在更改之间,我重新启动了Matlab,以确保路径设置中的所有更改都生效。
我希望能够清楚地说出我的问题。我们非常欢迎任何有关如何进行的建议!
答案 0 :(得分:0)
我能找到一个快速而肮脏的解决方案,现在还可以。 首先,我尝试将包含cplex1262.dll的目录添加到 'java.library.path'如下:
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.dll复制/粘贴到\ lib目录中。
那很有效。