【发布时间】:2020-11-02 23:23:35
【问题描述】:
我正在尝试使用 IntelliJ 从我的 Maven 项目构建一个 jar,但是在运行 jar 时我得到了Error: Could not find or load main class。
我有 3 个类(一个包含我的主要方法和一个简单的打印,另外 2 个是空的)。我有一个带有一个依赖项的 pom 文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>red-hat</id>
<url>https://maven.repository.redhat.com/earlyaccess/all/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>2.22.0</version>
</dependency>
</dependencies>
我尝试从 here、here 和 here 获得帮助,但似乎没有任何帮助。我很可能错过了对如何构建 jar 的一些基本了解。这是项目结构。任何帮助将不胜感激。
【问题讨论】:
-
您是使用 Maven 构建 jar 还是使用 IntelliJ IDEA 工件?最后一个 jar 里面有什么,你看到里面的类和正确的清单文件了吗?
-
我使用 IntelliJ 工件。用
jar tf .\KafkaToBigQueryJAR.jar检查JAR我可以看到manifast和类文件META-INF/MANIFEST.MF KafkaToBigQuery.class KafkaToBigQueryOptions.class META-INF/ Utils.class -
META-INF/MANIFEST.MF里面有什么?你是如何配置工件的?见jetbrains.com/help/idea/artifacts.html。您可能需要指定现有清单文件的位置或在自动生成的清单中指定主类。由于您使用 IntelliJ IDEA 构建工件,因此您的 Maven 配置根本不相关,并且带有 pom.xml 内容的问题标签只会让试图在这里帮助您的用户感到困惑。要使用 Maven 构建工件,请在 Maven 工具窗口中运行package目标,它将生成一个可能适合您的不同 jar。 -
感谢您的回复。当我没有任何 maven 依赖项时,我可以创建一个可以工作的简单 jar。我在我的 pom 中添加依赖项后立即收到错误,所以我认为它也与 maven 相关
-
见stackoverflow.com/a/42200519/104891 和stackoverflow.com/a/45169655/104891。带有数字签名的 Jar 依赖项将破坏最终的工件。
标签: java maven intellij-idea pom.xml