![](/img/trans.png)
[英]Java project doesn't run after maven build and not running on cmd
[英]Running maven project in cmd
我必須在cmd中運行maven項目。 這是我的pom.xml文件:
http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<!-- FIXME change it to the project's website -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.2.Final</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
</plugins>
</pluginManagement>
</build>
該項目在IDE(Eclipse)中運行得非常好,但是當我嘗試運行它時從命令行運行它我得到以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
at com.mycompany.app.App.main(App.java:15)
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
你的情況下的問題是你沒有類路徑中的依賴項。 你可以使用maven pluging來獲得這樣的。
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Source 如何使用Maven創建具有依賴項的可執行JAR?
這實際上取決於你如何設置你的項目,但是你的堆棧跟蹤字面上說JVM無法找到提到的類。 現在,您可以想象(這只是許多可能問題中的一個) - 您的代碼在某處引用了“Configuration”類,但是當項目從命令行運行時 - JVM無法找到它。
我建議看看這個主題,以了解收到的錯誤。 給出了許多想法,並得到了很好的解釋。
基本上,一旦你獲得了所有的依賴關系,那個錯誤就會失敗,如果你使用的是TestNG或JUnit,你將不需要一個主類。 如果將<defaultGoal>clean test</defaultGoal>
到POM,您將僅使用mvn clean test
運行mvn clean test
或甚至更短的mvn
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.