домашняя папка изменяется при использовании классов Java из matlab

#java #matlab #resources #jar #filepath

#java #matlab #Ресурсы #jar #путь к файлу

Вопрос:

Я пишу Java-приложение с пользовательским интерфейсом matlab. Для этого я использую объекты Java в matlab, как описано здесь:http://www.mathworks.com/help/techdoc/matlab_external/f4873.html

эти классы Java ссылаются (используя относительный путь) на ресурсы в какой-либо другой папке на родительской карте. В eclipse или в виде исполняемого файла jar все это работает нормально.

Проблема в том, что при использовании классов в matlab изменяется домашняя папка. Таким образом, вместо поиска в JAR / resources или PROJECTMAP / resources он ищет ресурсы в MATLAB / resources и возвращает исключение file not found.

то, как я в настоящее время решал это, довольно неубедительно: я просто помещаю копию папки ресурсов в каталог MATLAB, который выполняет код. Тем не менее, это плохое решение.

Чего бы я хотел, так это

1. включить папку ресурсов в jar (сгенерированную в eclipse), чтобы сделать возможным использование этих классов в matlab (короче говоря: текущий каталог независимости)

2. Возможность запуска того же кода из eclipse (для отладки / профилирования …).

3: Код должен выполняться независимо от местоположения, в котором находится jar, до тех пор, пока он добавлен в путь к классу matlab. (таким образом, jar не обязательно должен находиться в определенной папке (например, в папке MATLAB))

Итак, мне «просто» нужен способ указать местоположение папки ресурсов в моем коде, чтобы достичь 1,2,3 (1,2 наиболее важно).

Ответ №1:

Не уверен, как вы читаете и что делаете с этими ресурсами (так что это может быть неправильным решением для вашего случая), но вы действительно можете захотеть поместить их в свой classpath. Если вы поместите их в их собственную исходную папку в eclipse, вы можете настроить свою сборку так, чтобы она включала их в ваш jar. (У Maven по соглашению есть каталог /src /main /resources, который предназначен для вставки произвольных файлов в скомпилированный jar).

С этими ресурсами в classpath… Затем вы можете использовать classloader для загрузки файлов через getClass().getResourceAsStream() или getResource() и запускать с ним.

Комментарии:

1. Обратите внимание, что если вы хотите иметь доступ к ресурсам в jar из Matlab, вам нужны эти jar в вашем статическом пути к классу. Наличие их в пути к динамическому классу не работает.