изменения домашней папки при использовании классов Java из Matlab - PullRequest
1 голос
/ 30 апреля 2011

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

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

Проблема в в том, что при использовании классов в MATLAB домашняя папка изменяется. Поэтому вместо поиска в JAR / resources или PROJECTMAP / resources он ищет ресурсы в MATLAB / resources и возвращает исключение файла, не найденного.

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

Что бы я хотел, это

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

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

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

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

1 Ответ

0 голосов
/ 30 апреля 2011

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

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

...