Использование eclipselink в Java-коде, запускаемом из MATLAB - PullRequest
4 голосов
/ 08 декабря 2010

Я пытаюсь предоставить интерфейс, который я могу вызвать из MATLAB для доступа к содержимому базы данных. У меня уже есть существующий интерфейс Java, который использует eclipselink для подключения к базе данных, и я хотел бы использовать его повторно. Я написал класс для обеспечения этого, и он работает правильно, когда я вызываю его прямо из Java, но когда я пытаюсь вызвать его из MATLAB, я получаю следующее исключение:

javax.persistence.PersistenceException: No Perisistence provider for EntityManager named DatabaseConnection

Обычно это исключение возникает, когда у меня нет папки META-INF с файлом persistence.xml в пути к классам, но я попытался поместить базовую папку, содержащую папку META-INF, в динамический и статический MATLAB javaclasspaths. без успеха. Опять же, этот точный код (включая persistence.xml) отлично работает при запуске из Java. Кто-нибудь знает, чего мне не хватает?

Единственное основное отличие, которое мне удалось отследить по сравнению с тем, что происходит при запуске Java-кода, заключается в том, что MATLAB использует загрузчик классов OSGI (felix), а не загрузчик классов по умолчанию, который использует Java, но я не понял какая разница с поиском файла persistence.xml.

1 Ответ

1 голос
/ 17 декабря 2010

См. Мой ответ на это в Использование универсальных классов Java в Matlab . Это уродливо, но единственное, что я до сих пор работаю.

...