【问题标题】:Run Java Maven program from Linux terminal: ClassNotFoundException [duplicate]从 Linux 终端运行 Java Maven 程序:ClassNotFoundException [重复]
【发布时间】:2021-10-21 07:01:03
【问题描述】:

我有读取 Json 文件并获取一些数据的 Java maven 项目。 但是我无法通过 Linux 终端运行我的程序。

包名:我的

类名:StartProgram

操作系统 Ubuntu 20.04.2.064

Maven 3.6.3

Java 14.0.2

我做了接下来的步骤:

mvn clean install
cd target
java -cp jsonReader-0.0.1-SNAPSHOT.jar my.StartProgram

输出:

Error: Could not find or load main class my.StartProgram
Caused by: java.lang.ClassNotFoundException: my.StartProgram

我的 pom.xml 的一部分:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>my.StartProgram</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

我该如何解决?提前谢谢你。

【问题讨论】:

  • 能否请您发布 StartProgram 代码...
  • github.com/mariamura/jsonReader/blob/master/src/main/java/…(但没有更新的 POM.xml 并且没有包“我的”)。你没事吧?)
  • 你从哪里得到my?我看你没有包裹。尝试运行java -cp jsonReader-0.0.1-SNAPSHOT.jar StartProgram
  • 我已经尝试了所有选项(有创建的“我的”包和没有)...

标签: java linux maven exception terminal


【解决方案1】:

项目目录中的简单方式:

mvn exec:java -Dexec.mainClass="StartProgram"

另一种方式:

您的项目依赖于另一个外部库,因此当您使用java -cp ... 时,您可以提供所有这些。

您可以通过以下方式构建依赖项列表(需要在您的 pom 更改时运行一次):

mvn dependency:build-classpath -Dmdep.outputFile=cp.txt

然后您可以通过以下方式运行您的程序:

java -cp `cat cp.txt`:target/jsonReader-1.0-SNAPSHOT.jar StartProgram

【讨论】:

  • 是的!它有效!!)谢谢)还有一个问题:我怎样才能执行它只显示 StartProgram 的结果?再次感谢您!
  • 尝试使用mvn -q运行
猜你喜欢
  • 1970-01-01
  • 2014-02-02
  • 2015-05-25
  • 2011-07-11
  • 1970-01-01
  • 2011-11-27
  • 2015-05-25
  • 1970-01-01
  • 2012-07-27
相关资源
最近更新 更多