繁体   English   中英

通过终端(或命令提示符)运行 jar 时出现 ClassNotFoundEcception

[英]ClassNotFoundEcception when running jar through Terminal (or command prompt)

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

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

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

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

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

要从 CMD 运行包含所有 depedecies 的程序,请在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM