【问题标题】:"no main manifest attribute" error in intellij when executing jar执行 jar 时 intellij 中出现“无主清单属性”错误
【发布时间】:2018-06-17 01:29:11
【问题描述】:

我正在开发一个想要作为 jar 执行的 kotlin 项目。这一切都在 IntelliJ Idea 中完成,我开始使用工件制作 jar。

我遵循的过程是(如创意指南所示):

  1. 从项目结构中添加工件(作为 jar)
  2. 构建 jar
  3. 运行罐子

在这之后,我得到一个

'no main manifest attribute, in ____.jar'

在阅读了几个堆栈溢出问题后我尝试了什么:

  • 检查清单文件是否在正确的文件夹中并且在工件中具有正确的路径
  • 将代码添加到 jar->manifest 部分的 build.gradle 文件
  • 尝试将清单内容移动到资源文件夹的方法
  • 检查 jar 是否存在
  • 将清单内容移动到不同的文件夹(java、kotlin、out 文件夹)
  • 确保清单文件格式正确

以上所有方法均无效。

让我感到困惑的是,即使我将清单文件更改为“不正确”的格式,它仍然会给出相同的错误。工件详细信息中所述的路径是正确的,但即使我故意在清单文件中输入不正确的项目也没有区别。不确定这是否是“真正的”问题,但我也不确定如何解决这个问题

【问题讨论】:

  • 请查看此内容stackoverflow.com/questions/32567167/…。尝试相应地更新您的 build.gradle,然后从 Gradle 运行 build 任务。之后,您应该会在build/libs 文件夹中获得一个可执行的jar 文件。
  • 我看过这篇文章,但也没有用。我的构建中也没有看到 libs 文件夹
  • 项目中的任何地方都不需要清单文件。您唯一需要的是build.gradle 中的这个jar 任务。该任务在运行 build 任务时运行,因此您需要从控制台运行 ./gradlew build 以排除任何 IntelliJ Idea 细节。在这种情况下,您通常会在 Gradle 项目的 build/libs 文件夹中获得一个 jar 文件。 jar 文件应包含生成的清单文件。一切都与 Java 相同,Kotlins 在这里没有添加任何细节。
  • 这对我很有帮助,虽然我以前读过这篇文章。但是我终于解决了问题

标签: intellij-idea jar kotlin


【解决方案1】:

没有一个解决方案对我有用。

我是这样解决的:
设置工件时,更改:
Meta-inf: (...)\src\main\(必须去掉“java”)

另外,资源有问题,这样解决的:
设置工件时:
输出布局 > 添加 > 目录内容 > 资源的副本

就是这样!

【讨论】:

  • 我在使用 Gradle 时遇到了这个问题,但是使用 Kotlin > JVM 创建项目(这将使用 Maven)然后将资源文件夹放入 src 文件夹中,无需执行任何其他操作
【解决方案2】:

在创建可执行 jar 文件时,显式创建一个 mainfest.txt 文件 应该按照目录结构的顺序,mainfest.txt文件应该只包含一行(Main-Class:包含main方法的类的名称)然后运行jar工具

【讨论】:

  • 这是对的一半。我已经解决了这个问题,明确创建清单文件是正确的。但是,扩展名应该是 .MF 并且应该放在 META-INF 文件夹中。谢谢你的回复
【解决方案3】:

对于可能在 intellij 中遇到此问题并且在任何其他帖子中没有找到解决方案的任何人,对我有帮助的是

  1. 导航到项目结构
  2. 转到“工件”选项卡
  3. 在我的 jar 中显式添加新的 META-INF/ 目录
  4. 将创建的 MANIFEST.MF 文件添加到来自 ARTIFACTS 选项卡的 jar 中的 META-INF/
  5. 重新排列 META-INF/ 的顺序,使其位于顶部
  6. 构建和运行

The end result looked like this

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2018-02-04
    • 2021-11-02
    相关资源
    最近更新 更多