2015-10-20 36 views
0

我想從Matlab調用一個使用Cplex的Java函數。 目前,我卡住了。下面列出了我嘗試過的一些事情,但我沒有想法。之前,我在那裏,讓我列出的版本:從Matlab調用使用Cplex的Java函數時,java.library.path中的錯誤

  1. Matlab的版本8.3.0.532(R2014a)
  2. 的Java 1.7.0_11-b21的與Oracle公司的Java熱點(TM)64位服務器VM混合模式
  3. Eclipse中jre7和jdk1.7.0_79

我創建了一個包 「milp.jar」,並嘗試從MATLAB調用下面的函數:

milp.MTsolver.Plan() 

在我的milp.jar的基本版本中,沒有任何Cplex功能,這沒有問題。就在我的Java類中使用Cplex函數時,我就遇到了麻煩。我試過如下:

爲了能夠使用的Cplex,我添加了路徑javaclasspath.txt文件在Matlab文件夾

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.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一個答案:當我運行在Matlab控制檯下面

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

發生同樣的錯誤。 在這裏,他將

-Djava.library.path=... 
在VM選項字段

,但在Netbeans的。我可以嘗試在Matlab中做類似的事情,但我還沒有想出如何。 最後,我只是將包含cplex.jar和cplex1262.dll的目錄添加到PATH環境變量中。那裏也沒有運氣。

另一個重要提示可能是我在Eclipse中運行我的代碼時沒有問題,包括Cplex功能!也許值得一提的是,在兩次更改之間,我重新啓動Matlab以確保路徑設置中的所有更改都生效。

我希望能夠清楚地說明我的問題。任何關於如何進行的建議都非常歡迎!

回答

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 

而只是複製/粘貼\ lib目錄中的cplex1262.dll。

工作。