Я пытаюсь использовать пакет javabuilder от Matlab под Windows XP, но при попытке создать экземпляр любого класса javabuilder возникает странная ошибка. Чтобы проиллюстрировать эту проблему, я создал простую программу, которая печатает MCRROOT и PATH системные переменные (чтобы проверить, если они правильно установлены) и пытается создать MWCharArray:Matlab + Java: java.lang.ExceptionInInitializerError при попытке использовать javabuilder
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? Я пробовал Google, чтобы узнать, как установить MCRROOT, но есть противоречивые результаты: некоторые источники говорят, что я должен включить версию dir, другие говорят наоборот. Кроме того, почему метод isInstalledMCR
возвращает false
? Я дважды проверил установку MCR (и даже удалил и установил ее, чтобы убедиться), так почему же библиотека не находит ее?
Спасибо за помощь за любую помощь!
Редактировать: Я также попытался установить MCRROOT
без строки версии, и он также терпит неудачу.
Какую версию Matlab вы используете? –
Я пытаюсь выполнить предварительно упакованный файл jar, построенный с помощью Matlab7.1, и установил время выполнения компилятора 7.1 (с MCRInstaller.exe) – PaoloVictor