Я пытаюсь использовать MatlabCotrol (http://code.google.com/p/matlabcontrol/) из приложения Netbeans.
Чтобы использовать Matlabcontrol из приложения Java (например, без модулей Netbeans), нужно всего лишь добавить файл matlabcontrol-4.0.jar в проект, и все будет работать хорошо.
Когда я пытаюсь сделать то же самое из приложения Netbeans, я включаю файл jar с помощью «модуля библиотечного обертки», который в принципе должен позволять использовать файл jar в качестве модуля Netbeans. Однако Matlabcontrol не нравится таким образом. Проект компилируется правильно, что указывает на то, что модуль Wrapper действительно предоставляет определения классов в jar-файле matlabcontrol. Тем не менее, я получаю следующее исключение при запуске программы:
java.lang.NullPointerException
at java.io.File.<init>(File.java:222)
at matlabcontrol.Configuration.getSupportCodeLocation(Configuration.java:227)
at matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:278)
at matlabcontrol.RemoteMatlabProxyFactory.requestProxy(RemoteMatlabProxyFactory.java:116)
at matlabcontrol.RemoteMatlabProxyFactory.getProxy(RemoteMatlabProxyFactory.java:134)
at matlabcontrol.MatlabProxyFactory.getProxy(MatlabProxyFactory.java:81)
Проблема, похоже, заключается в том, что коду matlabcontrol в файле jar необходимо знать расположение кода. В случае приложения Java файл jar находится в определенном каталоге, который, похоже, ожидает Matlabcontrol. Внутри netbeans это не так. Ошибка происходит именно в этих строках кода:
URL url = Configuration.class.getProtectionDomain().getCodeSource().getLocation();
File file = new File(url.toURI().getPath()).getCanonicalFile();
Исключение вызывается конструктором File, поскольку функция класса Configuration возвращает нулевой URL-адрес.
Кто-нибудь знает, как решить эту проблему?
В любом случае, спасибо, что прочитали мой вопрос!