gpt4 book ai didi

java - 无法使用 Java 类和 Jar 文件找到或加载主类

转载 作者:行者123 更新时间:2023-12-01 20:17:27 26 4
gpt4 key购买 nike

我是java新手,在执行Class/Jar文件时面临同样的老问题,即收到错误,提示“无法找到或加载主类com.finance.LoanProcessor”,其中com.finance.LoanProcessor是我的完全合格的类名。我创建了许多其他示例项目,并且可以在其中执行类/jar 文件。只有这个项目导致了这个问题。

以下是我从 Java 教程和 StackOverflow 解决方案中对此问题的理解:

  1. 在使用“Java”命令直接执行类文件时,我需要使用以下语法:java com.finance.LoanProcessor

注意:我不应该使用“.class”后缀。在命令提示符中,我应该位于具有“com”文件夹的父文件夹中,以便 java 命令可以在 com/finance 目录中导航并执行 LoanProcessor 类。

  • 在使用“Java”命令直接执行 jar 文件时,我需要使用以下语法:java -jar LoanOnboardingSystem-1.0-SNAPSHOT.jar
  • 注意:我应该位于该 jar 文件所在的同一目录中。另外,jar 应该具有 META-INF/MANIFEST.MF 文件,该文件应该定义 Main-Class: com.finance.LoanProcessor 属性。

    我已经记住了上述所有注释,并尝试执行我的主类和 jar 两者,但都失败了。虽然其他示例项目在我的同一台笔记本电脑上以相同的方式执行,但只有这个项目给出了错误。我问了我办公室的几位java专家,但他们也无法解决问题。

    因此,我现在已将整个项目上传到以下 git 存储库:LoanOnboardingProject

    社区可以帮助检查该项目并提出我缺少的内容吗?

    我做过的其他一些事情:

    1. 我正在使用 IntelliJ IDE。我已经使用 IDE 的开箱即用选项构建了 jar,但它给出了相同的错误。 [此 jar 位于上述存储库的“out”文件夹下。]

    2. 我已将上述项目创建为 Maven 项目。我使用“mvn package”命令来构建 jar,但它给出了相同的错误。 [此 jar 位于上述存储库的“目标”文件夹下。]

    3. 当我在 IntelliJ 本身中运行该程序时,它工作得很好。没问题。

    提前非常感谢。非常感谢任何帮助。

    最佳答案

    问题是,您的主类 LoanProcessor 实现了 CommandLineRunner 接口(interface)。此类不包含在生成的 jar 中(当由 maven 构建时)。因此它不在类路径上。这就是为什么 java 无法加载主类的原因(因为它引用了另一个它找不到的类)。

    要运行应用程序,您需要将所有必需的类添加到类路径中(使用 java 命令的 -cp 参数)。对于您的情况来说,这将非常复杂,因为您需要添加 pom.xml 文件中指定的所有依赖项。以及这些依赖项所需的所有 jar。这可能会是很多 jar 文件。

    您可以使用 maven-shade-plugin 来构建一个包含所有依赖项的 jar。

    这是一个示例配置(将您的 pom 添加到该部分):

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
    <execution>
    <phase>package</phase>
    <goals>
    <goal>shade</goal>
    </goals>
    <configuration>
    <transformers>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    <manifestEntries>
    <Main-Class>com.finance.LoanProcessor</Main-Class>
    </manifestEntries>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
    </transformers>
    </configuration>
    </execution>
    </executions>
    </plugin>

    然后您将能够执行该类(当站在包含 pom.xml 的目录中时):

    java -cp target/LoanOnboardingSystem-1.0-SNAPSHOT.jar com.finance.LoanProcessor

    或通过:

    java -jar target/LoanOnboardingSystem-1.0-SNAPSHOT.jar 

    关于java - 无法使用 Java 类和 Jar 文件找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45502988/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com