Jar File и CLASSPATH в приложении Netbeans (Matlabcontrol) - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь использовать 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-адрес.

Кто-нибудь знает, как решить эту проблему?

В любом случае, спасибо, что прочитали мой вопрос!

...