当前位置: 首页 > 知识库问答 >
问题:

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

衡翰翮
2023-03-14

我是java的新手,在执行class/jar文件时遇到了同样的问题,即得到的错误是“Could not find or load main class com.finance.LoanProcessor”,其中com.finance.LoanProcessor是我的完全限定类名。我已经创建了许多其他示例项目,并且可以在其中执行class/jar文件。只有这个项目引起了这个问题。

下面是我从Java教程和针对这个问题的StackOverflow解决方案中了解到的内容:

    null

注意:我不应该使用'.class'后缀。在命令提示符中,我应该在具有'com'文件夹的父文件夹中,这样java命令就可以在COM/Finance目录中导航并执行LoanProcessor类。

注意:我应该在这个jar文件所在的同一个目录中。此外,jar应该有meta-inf/manifest.mf文件,该文件应该定义了main-class:com.finance.LoanProcessor属性。

我把上面所有的注释都记在心里,并尝试同时执行我的主类和jar,但都失败了。当其他样例项目在我的同一台笔记本电脑上以相同的方式执行时,只有这个项目给出了错误。我已经询问了我办公室的一些java专家,但他们也无法解决问题。

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

社区能帮我检查一下这个项目,并提出我所缺少的东西吗?

我做过的其他事情很少:

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

共有1个答案

赵奕
2023-03-14

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

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

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

<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>
java -cp target/LoanOnboardingSystem-1.0-SNAPSHOT.jar com.finance.LoanProcessor

或由:

java -jar target/LoanOnboardingSystem-1.0-SNAPSHOT.jar 
 类似资料:
  • 我在创建工作JAR文件时遇到问题。我可以跑步。类文件如下所示: 但作为jar运行(在构建脚本中)失败: 我将通过使用简单的Hello World项目来简化我遇到的问题: 文件需要进入文件夹。JAR文件需要在文件夹中。是构建JAR文件的bash脚本。如下: 你好世界java: 运行JAR文件,如构建中所示。sh结果 如前所述,直接运行应用程序效果很好。 这是的结构。 的内容。 我已经工作了6年了,现

  • 我在IntelliJ中创建了一个带有选项的JAR工件,将JAR文件提取到目标JAR中。看这个样子: 我正确填写了清单信息: 我用ZIP检查了JAR文件的内容,它包含了JAR文件、正确填充的manifest.mf和项目的.class文件。 谢谢:Levente

  • 我用的是软呢帽19。HelloWorld的内容。爪哇: 我可以使用 javac HelloWorld。JAVA 但我无法使用 java HelloWorld 它给出了以下错误 错误:无法找到或加载主类HelloWorld 但我可以用 sudo java HelloWorld 我错过了什么???

  • 几天来,我一直在尝试为我的多模块maven项目创建一个可执行的jar文件。但是,当我尝试运行这个jar文件时,我得到“无法找到或加载主类src.main.java.com.domain.MainClass”(为了公司的隐私,我已经更改了名称domain和MainClass) 我已经找了几天了,没有一个明显的提示似乎有效。 我使用的命令:mvn clean package,然后我cd到目标文件夹中,

  • 我已经使用netbeans制作了jar文件,使用Build和Clean项目选项。我得到了.jar文件,现在当我执行它一小段时间后,cmd窗口出现,并给出一个错误:“Could not find or load main class while executing jar file” 但是,如果我使用命令提示符Java-jar执行jar,它可以正常工作 Netbeans的输出为: 而在jar文件中,

  • 我知道这是一个常见的问题,但我已经尝试了很多事情来使这起作用。 主类名:Test 我包含了带有属性的,如下所示: null 在我的部署简介中,我包括: lib目录 文件的组贡献者(,我正在使用的一个外部)的所有合并内容 注意:我使用的是JDeveloper12c IDE 无法运行jar文件:无法找到或加载主类Hello