簡體   English   中英

在cmd中運行maven項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM