【问题标题】:ClassNotFoundEcception when running jar through Terminal (or command prompt)通过终端(或命令提示符)运行 jar 时的 ClassNotFoundEcception
【发布时间】:2021-12-14 00:16:45
【问题描述】:

所以我知道有很多像这样的问题,我已经解决了所有问题,但我似乎找不到像我这样的问题。

基本上,我有一个包含很多 Maven 依赖项的 java 项目。当我使用 IntelliJ 运行项目时,该项目编译并运行得很好,但现在我试图通过终端(或命令提示符)运行它。为了做到这一点,我运行了 mvn package,这样我就可以得到一个 jar 文件,当我运行 java -jar server.jar 时,我得到了经典的 ClassNotFoundEcception 异常。就我而言,它说它是:

Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

当我通过(暂时)注释掉使用此类的代码部分来抑制它时,我最终会遇到另一个类的相同错误。在这一点上,我知道我需要某种文件夹(如果我错了,请纠正我,但我相信它称为 CLASSPATH),其中包含每个依赖项的 .jar。任何人都可以清楚地向我解释情况以及我应该如何组织每个依赖项的 .jar 文件(如果这甚至是我必须做的来修复我的错误)。

【问题讨论】:

  • 这个question应该很有用
  • 不是,我试过了,还是不行。我想知道的是在 IntelliJ 中运行程序时依赖项所在的位置。这可以帮助我了解从终端运行文件时需要将它们放在哪里。 @Morteza Jalambadani
  • 解压你的jar文件并确保包含这些文件。
  • 包含哪个文件?

标签: java maven jar dependencies classnotfoundexception


【解决方案1】:

org.apache.commons.fileupload.FileItemFactory 和很可能的其他依赖项不在类路径中。 Intellij 自动在类路径中包含依赖项,这就是它起作用的原因。

要从包含所有依赖项的 CMD 运行程序,请在 pom.xml 中定义以下插件:

<plugins>
    <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>
        </configuration>
    
        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

然后运行:

mvn clean package
java -jar server-jar-with-dependencies.jar

【讨论】:

  • 好的,我明白这意味着什么,这正是我想要的!现在,当我这样做时,它创建了两个 .jar 文件。第一个是我的 server.jar。第二个包含所有依赖项(当我提取它时,我可以看到它们全部)。当我运行 java -jar server.jar 时,它仍然不起作用。有没有办法我应该指定依赖项的位置?它甚至应该生成两个 .jar 文件(我相信依赖项应该已经在 server.jar 中)。
  • 新 jar 包含您的代码和所有依赖项。所以运行那个:java -jar server-jar-with-dependencies.jar
  • 你应该解释这是做什么的。此外,这很可能是重复的。
猜你喜欢
  • 2013-07-27
  • 2015-06-23
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2020-09-07
  • 2017-01-25
  • 1970-01-01
相关资源
最近更新 更多