从Matlab调用使用Cplex的java函数时,java.library.path中出错

从Matlab调用使用Cplex的java函数时,java.library.path中出错,java,matlab,jar,cplex,Java,Matlab,Jar,Cplex,我想从Matlab调用一个使用Cplex的Java函数。 此刻,我被困住了。下面是我尝试过的事情列表,但我没有主意。在到达之前,让我列出以下版本: Matlab版本8.3.0.532 R2014a Java 1.7.0_11-b21与Oracle Corporation Java HotSpotTM 64位服务器虚拟机混合模式 带有jre7和jdk1.7.0_79的Eclipse 我创建了一个包milp.jar,并尝试从Matlab调用以下函数: milp.MTsolver.Plan() 在

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

Matlab版本8.3.0.532 R2014a Java 1.7.0_11-b21与Oracle Corporation Java HotSpotTM 64位服务器虚拟机混合模式 带有jre7和jdk1.7.0_79的Eclipse 我创建了一个包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=...
Java exception occurred:
java.lang.UnsatisfiedLinkError: C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar: %1 is not a valid Win32 application
Java exception occurred:
java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J
接下来,我应该首先加载库:

java.lang.System.load('C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar');
但这会产生以下错误:

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=...
Java exception occurred:
java.lang.UnsatisfiedLinkError: C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar: %1 is not a valid Win32 application
Java exception occurred:
java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J
在他看来,我尝试了另一种方法。我刚刚将cplex.jar复制到Matlab根文件夹中。没有成功。在Matlab的项目文件夹中复制cplex.jar时也不会成功

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

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=...
Java exception occurred:
java.lang.UnsatisfiedLinkError: C:\Program Files\IBM\ILOG\CPLEX_Studio1262\cplex\lib\cplex.jar: %1 is not a valid Win32 application
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');
最后一件我可以尝试的事情来自于这个问题的答案。 在这里,他开始了

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

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


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

我找到了一个快速而肮脏的解决方案,目前还可以。 首先,我尝试将包含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
只需在\lib目录中复制/粘贴cplex1262.dll

成功了