将Java程序导出到JAR文件的问题

时间:2017-12-06 18:24:46

标签: java hibernate

所以,软件运行正常,一切都很好。我确实在网上找到了一些问题的答案,但我似乎无法解决我的问题。在我的构建路径和顺序中,一切似乎都没问题。 我得到的错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/service/ServiceRegistry
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.hibernate.service.ServiceRegistry
        at java.base/java.net.URLClassLoader.findClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 3 more

我需要将我的项目导出到JAR文件,请帮助我,我很绝望。感谢任何关心提前回答的人。

2 个答案:

答案 0 :(得分:0)

构建jar-with-dependencies将解决您的问题 将以下内容添加到pom.xml文件中:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.main.Main</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
    </plugin>
  </plugins>
</build>

运行mvn clean compile assembly:single
然后,您就可以运行java -jar name-with-dependencies.jar

答案 1 :(得分:0)

所以,我已经弄清楚问题是什么了。问题是,我在我的PC上使用Java 8时,我已经在我的PC上安装了Java 9(不久前)。当我尝试运行JAR文件时,它使用Java 9来运行它,并且它有一些错误放置的依赖项。我刚刚卸载了Java 9,用jre 1.8.0_144导出了项目,我在我的PC上运行jdk 1.8.0_121。现在一切都很好。

感谢@Gal和@AJNeufeld的回答和帮助。