2015-05-17 4 views
0

Я пытаюсь запустить файл bat, который должен запустить мой restCRUD-сервер, написанный в java. Проект содержит только один основной метод так что мой файл ванны выглядит следующим образом:Как решить java.lang.NoClassDefFoundError при создании файла bat?

Java -jar TaxAppWebserver.jar

пауза

Проблема заключается в том, что когда я запускаю файл битого я java.lang.NoClassDefFoundError.

Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Persistence 
     at facade.FacadeLogic.<init>(FacadeLogic.java:17) 
     at restCRUD.HandlerLogger.<init>(HandlerLogger.java:14) 
     at restCRUD.RestFileServer.run(RestFileServer.java:22) 
     at restCRUD.RestFileServer.main(RestFileServer.java:36) 
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 

Линия 17 из FacadeLogic.java:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("TaxAppWebserverPU"); 

Может кто-нибудь дать мне подсказку о том, что это не так?

+0

Вам необходимо добавить банки, содержащие классы персистентности в вашем пути к классам, используя -classpath. –

ответ

0

Восстановите свой файл jar с отсутствующим банком, добавленным в путь к классам в файле MANIFEST.MF. IDE, такие как Eclipse, можно добавить их автоматически при создании исполняемых файлов фляги

Class-Path: javax.persistence.jar 
0

Я решил эту проблему путем создания Lib папки в директории проекта и копирование всех внешних библиотек в этой папке. Кроме того, мне пришлось сменить мой bat-файл на

java -cp TaxAppWebserver.jar restCRUD.RestFileServer 

так, чтобы он знал, где главный метод.

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