我一直試圖在Windows XP下使用Matlab的javabuilder包,但在嘗試實例化任何javabuilder類時出現奇怪的錯誤。爲了說明這個問題,我創建了一個簡單的程序,打印MCRROOT和PATH系統變量(以檢查他們是否正確設置),並嘗試創建一個MWCharArray:當我執行程序Matlab + Java:嘗試使用javabuilder時的java.lang.ExceptionInInitializerError
import com.mathworks.toolbox.javabuilder.*;
import com.mathworks.toolbox.javabuilder.internal.MCRConfiguration;
class Main
{
public static void main(String[] args)
{
System.out.println("MCRROOT: " + System.getenv("MCRROOT"));
System.out.println("PATH: " + System.getenv("PATH"));
System.out.println(MCRConfiguration.isInstalledMCR());
MWCharArray test = new MWCharArray("Test");
}
}
,輸出是:
MCRROOT: C:\Program files\MATLAB\MATLAB Compiler Runtime\v710
PATH: C:\Program files\CollabNet Subversion Client;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program files\MATLAB\MATLAB Compiler Runtime\v710
false
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:77)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.<clinit>(MCRConfiguration.java:51)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:56)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(MWMCR.java:1447)
at com.mathworks.toolbox.javabuilder.MWUtil.GetUnknownClassID(MWUtil.java:1258)
at com.mathworks.toolbox.javabuilder.MWClassID.<clinit>(MWClassID.java:41)
at com.mathworks.toolbox.javabuilder.MWCharArray.<init>(MWCharArray.java:75)
at Main.main(Main.java:11)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1937)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:70)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.<clinit>(MCRConfiguration.java:72)
... 8 more
Java Result: 1
首先,MCRROOT和PATH的值是否正確?我試着找出如何設置MCRROOT的谷歌,但有矛盾的結果:一些消息來源說,我應該包括de版本目錄,其他人則說相反。另外,爲什麼isInstalledMCR
方法返回false
?我仔細檢查了MCR安裝(甚至是卸載並安裝它),爲什麼庫不能找到它?
在此先感謝您的幫助!
編輯:我也試過設置MCRROOT
沒有版本字符串,它也失敗了。
您使用的是什麼版本的Matlab? – 2010-09-17 14:50:59
我試圖執行一個預先打包的jar文件,用Matlab7.1構建,並安裝了7.1編譯器運行時(使用MCRInstaller.exe) – PaoloVictor 2010-09-17 17:29:16