Matlab не может прочитать ресурсы JAR - PullRequest
4 голосов
/ 22 марта 2012

Я использую Matlab с интеграцией Java и могу связывать файлы JAR Java, что позволяет мне создавать объекты Java и вызывать методы из Matlab. Проблема с ресурсами. Например, если у меня есть файл XML, расположенный в корне JAR, я могу успешно загрузить его из приложения Java, но не из Matlab.

У кого-нибудь есть идеи о том, как сделать доступ к ресурсам Matlab внутри файлов JAR?

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 декабря 2012

Если вы добавите файл jar в динамический путь к классу Java Java MATLAB (например, используя javaaddpath), ресурсы, содержащиеся в jar, НЕ будут видны никакому java-коду. Как обсуждалось в этом сообщении, элементы динамического пути к классам MATLAB на самом деле не находятся на пути к классам JVM. Чтобы получить доступ к ресурсам в моем файле jar, я прибегнул к добавлению jar в статический путь к классам. Это можно сделать в MATLAB R2012b, создав файл с именем javaclasspath.txt в каталоге, в котором вы запускаете MATLAB, который содержит список используемых вами jar-файлов. Соответствующая документация MATLAB

0 голосов
/ 22 марта 2012

Обычные методы Java Class.getResource должны работать при вызове из Matlab.Какой синтаксис вы используете, чтобы попытаться загрузить ресурс в Java и в Matlab?Если вы используете getResource, вызываете ли вы его для класса, который был загружен из того же JAR-файла, который содержит ресурс?

В Matlab классы в статических и динамических путях классов используют разные ClassLoaders.Ресурсы в JAR на динамическом пути к классам могут быть невидимы для классов на статическом пути к классам.Поэтому, если ваш JAR находится в динамическом пути к классам, вам нужно убедиться, что getResource вызывается для класса, который поступил из того же ClassLoader.

...