2013-07-02 2 views
0

У меня есть рабочий проект maven, который использует JPA как постоянный слой; этот уровень имеет дело с одной базой данных MySQL и одной базой данных SQL Server.Отсутствие провайдера постоянства WHEN экспорт файла jar

Когда я запускаю его внутри Eclipse, нет проблем; но когда я пытаюсь экспортировать его за пределы выхода, когда я запускаю банку консольных печатает известные:

javax.persistence.PersistenceException: No persistence provider for 
EntityManager named axaptaUnitName 

axaptaUnitName является блок, который имеет дело с SQL Server. Я пробовал все три типа экспорта из Eclipse, извлекал необходимые библиотеки в JAR, пакет в JAR и копировал во внешнюю папку; ни один из них не работает.

Все библиотеки (включая соединитель с SQL Server) правильно добавлены в classpath; внутри Eclipse все работает отлично; поэтому я предполагаю, что это какая-то проблема с экспортом.
Любые предложения?

Редактировать: Я попытался заменить драйвер Microsoft SQL драйвером JTDS; но проблема все еще происходит.

ответ

0

Я нашел одно решение:

Вместо экспорта проекта с Eclipse, я формировала банку с Maven this way.

0

Я предполагаю, что вы используете метод «uber-jar», где все баны зависимости взорваны в одну большую банку. Проблема с этим подходом заключается в том, что в банке есть файлы с одинаковым относительным путем, которые они могли бы переопределить друг друга. Рассмотрим scneario:

// contents of A.jar 
com/foo/Class1.class 
com/foo/Class2.class 
META-INF/persistence.xml 

// contents of B.jar 
com/bar/Class1.class 
com/bar/Class2.class 
META-INF/persistence.xml 

Когда a.jar и b.jar взрываются и повторно упакованы в Uber.jar, ранее META-INF/persistence.xml будет перезаписан и может привести к ошибкам/нежелательное поведение

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

java -cp "dependency/;myprog.jar" com.foo.MyMainClass 

(все банки зависимостей размещены на папка «dependency»)

+0

Я пробовал ваше решение, все еще случается такая же ошибка :( – svprdga

1

Работа для этого.

  1. Я просто экспортировал его как runnable Jar с опцией - «Извлеките необходимые библиотеки в сгенерированный Jar».
  2. Открытая сгенерированная банда с программным обеспечением для архитекторов.
  3. Тогда я обнаружил, что в папке META-INF нет «Persistence.xml».
  4. Я потащил свой файл «Persistence.xml» в эту папку META-INF в самом окне achiever.
  5. Закрытая программа архивиста.

После этого Исключение PersistenceException исчезло.

Смежные вопросы