2015-07-03 28 views
3

我嘗試使用hibernate配置從eclipse maven項目創建jar文件。如何使用休眠配置爲maven eclipse項目創建可運行JAR文件

這是我的項目結構,我在resource /和src/main/resources /文件夾中都有hibernate.cfg.xml文件。我通過從導出選項中選擇可運行jar文件來製作jar文件。 (由於從link幫助)

這是運行可執行的JAR文件時出現錯誤:

ehsanik$ java -jar oh_oh.jar 
log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: java.lang.ExceptionInInitializerError 
    at com.jvmhub.tutorial.App.StartDB(App.java:25) 
    at CopyOfMain.main(CopyOfMain.java:7) 
    ... 5 more 
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found 
    at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173) 
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1940) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1921) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1901) 
    at com.jvmhub.tutorial.App.StartDB(App.java:19) 
    ... 6 more 

回答

0

TL; DR-解決方案

把你hibernate.cfg.xmlsrc/main/resource。然後,不要通過eclipse的導出功能導出 您的項目。而是使用maven-assembly-plugin創建一個可執行的jar。以mvn package assembly:single運行。

什麼日食呢?爲什麼它不工作

如果您選擇在Eclipse中選擇「導出」,編譯後的類(由食編譯)將被放入該罐子。但Eclipse不知道Maven Standard Directory Layout。它只會將這些文件留在他們的文件夾中。另一方面,Maven會將src/main/resources-文件夾中的所有資源複製到jar文件的根目錄。

你如何讀取錯誤見

第一個錯誤:

log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 

這意味着,log4j的沒有找到一個log4j.properties或.xml。它是未配置的。這是第一個暗示,你的構建是不成熟的。

二錯誤:

Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found 

二暗示,你的資源是不是在圖書館excpect他們是一個位置(在這種情況下,休眠)。

相關問題