#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 в вашем статическом пути к классу. Наличие их в пути к динамическому классу не работает.