JPA с TopLink: Никакой META-INF/persistence.xml не был найден в пути к классу

Существует много программирования задач, которые могут преуспеться без знаний в высшей математике. Вероятно, безопасно сказать, что большинство программирования доступных заданий будет редко требовать чего-то большего чем математики уровня средней школы. Но Вы не собираетесь писать программное обеспечение, которое помогает поместить шаттл в пространство путем взламывания далеко с новым математическим уровнем алгебры колледжа. Так, в то время как высшая математика обычно не жизненно важна для многих задач программирования, более трудные проблемы абсолютно потребуют его. Изучение математики также преподает ценные навыки решения проблем, которые могут использоваться почти где угодно. Я предполагаю, что Вы могли сказать, что это не необходимо большую часть времени, но это, конечно, собирается помочь почти всему времени.

8
задан kleopatra 6 March 2012 в 10:49
поделиться

4 ответа

Ошибка вводит в заблуждение. сам XML-файл должен не находиться в пути к классам; часть сообщения "META-INF / persistence.xml" означает, что каталог, содержащий META-INF / persistence.xml , должен быть .

Если на вашем жестком диске был следующий

C: \ libs \ JPA \ META-INF \ Persistence.xml

, то ваш путь к классам должен включать этот

CLASSPATH=c:\libs\JPA

Если META-INF \ Persistence.xml содержался в foo.jar, предполагая, что META-INF / Persistence.xml были расположены в корневой папке jar, ваш путь к классам должен иметь это

CLASSPATH=C:\<path to jar>\foo.jar

Это может показаться очевидным или избыточным, но моя цель - убедиться, что мы сравниваем яблоки с яблоками и CLASSPATH, наряду с загрузкой классов, может стать проблемой.

Итак, вы можете опубликовать свой CLASSPATH?

2
ответ дан 5 December 2019 в 05:45
поделиться

persistence.xml не должен быть в вашем пути к классам; Файл JAR, содержащий persistence.xml в своей папке META-INF, должен.

1
ответ дан 5 December 2019 в 05:45
поделиться

Ваш файл META-INF / persistence.xml должен выглядеть примерно так:

// <persistence>
//   <persistence-unit name="IRCBotPU">
//     <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
//     <!-- All persistence classes must be listed -->
//     <class>entity.Customer</class>
//     <class>entity.Order</class>
//     <class>entity.Item</class>
//     <properties>
//       <!-- Provider-specific connection properties -->
//       <property name="toplink.jdbc.driver" value="<database driver>"/>
//       <property name="toplink.jdbc.url" value="<database url>"/>
//       <property name="toplink.jdbc.user" value="<user>"/>
//       <property name="toplink.jdbc.password" value="<password>"/>
//       <!-- Provider-specific settings -->
//       <property name="toplink.logging.level" value="INFO"/>
//     </properties>
//   </persistence-unit>
// </persistence>

Атрибут имени единицы сохранения состояния в файле persistence.xml не соответствует значению, которое вы передаете. метод Persistence.createEntityManagerFactory. Убедитесь, что имя вашей единицы сохранения состояния установлено на «IRCBotPU».

0
ответ дан 5 December 2019 в 05:45
поделиться

У меня была та же проблема, я хранил свой persistence.xml файл в каталоге WebContent/META-INF, в то время как спецификация jpa гласит:
корнем единицы persistence является каталог WEB-INF/classes; поэтому persistence.xml файл содержится в каталоге WEB-INF/classes/META-INF
попробуйте разместить persistence.xml в src/META-INF.

22
ответ дан 5 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: