如何使用hibernate配置为maven eclipse项目制作runnable jar文件

时间:2015-07-03 19:49:50

标签: java eclipse hibernate maven jar

我尝试使用hibernate配置从我的eclipse maven项目制作一个jar文件。

这是我项目的结构,我在resources /和src / main / resources /文件夹中都有文件hibernate.cfg.xml。我通过从导出选项中选择runnable 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

1 个答案:

答案 0 :(得分:0)

<强> TL; DR-溶液

hibernate.cfg.xml放入src/main/resource。然后不要导出 你的项目是由eclipse的导出功能完成的。而是使用maven-assembly-plugin来创建可执行jar。与mvn package assembly:single一起运行。

日食的作用及其无效的原因

如果您选择&#34; export&#34;在eclipse选项中,您编译的类(由eclipse编译)将被放入该jar中。但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

第二个提示,你的资源不在库所要求的位置(在这种情况下是休眠)。