【问题标题】:Maven cannot find main class when trying to run from command line尝试从命令行运行时,Maven 找不到主类
【发布时间】:2020-02-13 13:45:22
【问题描述】:

我正在尝试从命令行运行一个 Maven 包,但每次我去构建它或之后运行它时,我都会得到:

Error: Could not find or load main class utility.Main
Caused by: java.lang.ClassNotFoundException: utility.Main

我搜索了多个 SO 帖子,尝试在 pom.xml 中进行更改,但似乎没有任何效果。它可以在 IDE 中工作,但不能在 CLI 中工作。

这是我的 pom.xml 的构建部分:

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>        
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>utility.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>     
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

我到底做错了什么?

使用请求的信息更新:

package utility;

import data.UMLEnvironment;

public class Main {

    public static void main(String[] args) {
        run();
    }

  public static void run() {
        UMLEnvironment env = new UMLEnvironment();
        Console console = new Console(env);
        console.run();
    }

}

我确实看到“Main.class”保存在目标/类/实用程序中。布局是:

src
-main
--java
---utility
----Main.java
----Otherstuff.Java
---data
----MoreStuff.java
---config
----AndALittleMoreStuff.java

编辑:我想出了解决办法。我试图通过java -cp target/mmouse-uml-0.0.2-SNAPSHOT.jar:target/mmouse-uml-0.0.2-SNAPSHOT-jar-with-dependencies.jar utility.Main 运行它,而我真的只需要像这样运行它:java -cp target/mmouse-uml-0.0.1-SNAPSHOT-jar-with-dependencies.jar utility.Main

【问题讨论】:

  • 请附上Main.java的源代码,以及项目的布局。该文件是否有package utility?你看到Main.class 生成了吗?
  • tourMainclass的全称是什么?
  • 使用请求的信息更新了 OP。

标签: java xml maven command-line-interface pom.xml


【解决方案1】:

我想出了解决办法。

我试图通过java -cp target/mmouse-uml-0.0.2-SNAPSHOT.jar:target/mmouse-uml-0.0.2-SNAPSHOT-jar-with-dependencies.jar utility.Main 运行它,而我真的只需要像这样运行它:java -cp target/mmouse-uml-0.0.1-SNAPSHOT-jar-with-dependencies.jar utility.Main

【讨论】:

  • 如果您想制作一个包含所有依赖项的单个 jar,请查看 maven shade 插件。在构建单个 jar 时,我发现它比 jar-with-dependencies 更容易使用
  • 我会调查的。谢谢你的建议:)
猜你喜欢
  • 2018-09-14
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 2020-10-30
  • 2011-08-21
  • 1970-01-01
相关资源
最近更新 更多