java中的错误。图书馆从Matlab调用使用Cplex的Java函数时的路径
我想从Matlab调用一个使用Cplex的Java函数。 此刻,我被困住了。下面是我尝试过的事情列表,但我没有主意。在到达之前,让我列出以下版本:
- Matlab版本8.3.0.532(R2014a)
- Java 1.7.0_11-b21与Oracle Corporation Java HotSpot(TM)64位服务器虚拟机混合模式
- 使用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 楼答案
我找到了一个快速而肮脏的解决方案,现在还可以。 首先,我尝试将路径添加到包含cplex1262的目录中。dll到 “爪哇。图书馆“路径”如下所示:
但这对我不起作用。用下面的命令,我快速而肮脏地查找该属性中已经包含的路径
只需复制/粘贴cplex1262即可。\lib目录中的dll
成功了