GMavenPlus:Groovy 到 JAR - 无法找到或加载主类。主类存在,清单文件显示有效

Posted

技术标签:

【中文标题】GMavenPlus:Groovy 到 JAR - 无法找到或加载主类。主类存在,清单文件显示有效【英文标题】:GMavenPlus: Groovy to JAR - Failed to find or load main class. Main class is present, manifest file appears valid 【发布时间】:2020-07-06 03:34:47 【问题描述】:

我已经对我构建的项目进行了成功的 mvn clean install,并且结构看起来正确,包括的所有类和清单都在 META-INF 下,包括类路径和主类。不确定这里有什么不匹配的,但是当我使用 javap 检查内容时,类内容是有效的。 Main 方法存在于 redacted_automatedSupport 类中,也是公共的。

错误:

host MINGW64 ~/Desktop/Projects/redacted_Automated_Support/target (master)
$ java -jar redacted_automatedSupport-1.0.jar
Error: Could not find or load main class support.redacted_automatedSupport

host MINGW64 ~/Desktop/Projects/redacted_Automated_Support/target (master)
$ java -cp redacted_automatedSupport-1.0.jar support.redacted_automatedSupport
Error: Could not find or load main class support.redacted_automatedSupport

host MINGW64 ~/Desktop/Projects/redacted_Automated_Support/target (master)
$

清单内容:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: bennet.vella
Class-Path: aws-java-sdk-s3-1.11.696.jar aws-java-sdk-kms-1.11.696.jar
  aws-java-sdk-core-1.11.696.jar commons-logging-1.1.3.jar httpclient-
 4.5.9.jar httpcore-4.4.11.jar commons-codec-1.11.jar ion-java-1.0.2.j
 ar jackson-databind-2.6.7.3.jar jackson-annotations-2.6.0.jar jackson
 -core-2.6.7.jar jackson-dataformat-cbor-2.6.7.jar joda-time-2.8.1.jar
  jmespath-java-1.11.696.jar groovy-3.0.1.jar groovy-json-3.0.1.jar gr
 oovy-dateutil-3.0.1.jar
Created-By: Apache Maven 3.6.3
Build-Jdk: 1.8.0_231
Main-Class: support.redacted_automatedSupport

Jar 存档内容(重命名为 zip 以供浏览):

支持 Jar Contents(删除了一些不必要的数据,所有名称匹配):

【问题讨论】:

能否找到 groovy-jar(从截图中不清楚应该在哪里(看起来不像影子罐或 springboot 胖罐))。主要是静态的吗? 现在这是一个有趣的观点,因为我以前使用过 java,但从未扰乱过 groovy 代码。我假设将构建一个 jar,它将包含与 groovy 相关的所有类文件。 正如我所说,这很难说。你能提供一个最小的失败例子吗? 不幸的是,不能真正分享直接代码,只是想法。我了解这会使诊断问题变得非常困难或不可能 - 感谢您的尝试。至于最小的失败示例,老实说,我不知道截止点在哪里。也许使用的任何外部库都会导致它失败。我还应该提到,是的,主要是静态的。事实上,我之前已经让代码开始运行,但是即使存在这种依赖关系,它也会在 groovy date utils 上立即失败。 我认为@cfrick 是对的。我建议阅读maven.apache.org/plugins/maven-shade-plugin。 【参考方案1】:

这不是一个完整的答案,因为它没有针对我遇到的 Maven 问题,但我确实解决了我使用错误清单文件时遇到的 IntelliJ 问题 - 那是因为我在 中创建清单src/main/java 应该是 src/main/resources。这有望缓解一些用户的问题。

然而,我还没有解决如何使用 Maven 正确构建和包含所有相关的依赖 jar - intelliJ 成功地做到了。

【讨论】:

以上是关于GMavenPlus:Groovy 到 JAR - 无法找到或加载主类。主类存在,清单文件显示有效的主要内容,如果未能解决你的问题,请参考以下文章

无法解析类 JunitAdapter

提取groovy jar

使用 groovy 脚本创建可执行 jar

无法在 Android Studio 3.3 Beta 2 中下载 groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15)

在 java 的 pom 中找不到工件 org.codehaus.groovy:groovy-all:jar:2.5.6 [重复]

jenkins gradle 找不到 groovy-all-2.5.5.jar