【问题标题】:"No main manifest attribute" when creating Kotlin jar using IntelliJ IDEA使用 IntelliJ IDEA 创建 Kotlin jar 时出现“无主清单属性”
【发布时间】:2019-02-26 19:13:39
【问题描述】:

从我的 Kotlin 代码创建 jar 并运行它时,它显示“没有主要清单属性”。 查看 manifest.mf 时,它有这样的内容:

Manifest-Version: 1.0

查看源中的文件时,它有这样的内容:

Manifest-Version: 1.0
Main-Class: MyMainClass

手动将源清单复制到 jar 时,它运行良好。

Screenshot of my artifact settings

【问题讨论】:

    标签: intellij-idea kotlin jvm manifest manifest.mf


    【解决方案1】:

    我在使用 Gradle 和 Kotlin 时遇到了这个错误。 我必须在我的build.gradle.kts 中添加一个明确的清单属性:

    tasks.withType<Jar> {
        manifest {
            attributes["Main-Class"] = "com.example.MainKt"
        }
    }
    

    gradle documentation 开始,最好创建一个fatJar 任务来包含所有运行时依赖项,以防遇到java.lang.NoClassDefFoundError 错误

    【讨论】:

      【解决方案2】:

      如果任何依赖 jar 具有 MANIFEST.MF 文件,它将覆盖定义 Main-Class 的自定义文件。

      为了解决这个问题,您应该执行以下操作:

      有关详细信息,请参阅related issue

      您也可以使用 Gradle 或 Maven 来生成 fat jar。

      【讨论】:

      【解决方案3】:

      1.在构建脚本中添加如下任务定义

      tasks.jar {
      manifest {
          attributes["Main-Class"] = "MainKt"
      }
      configurations["compileClasspath"].forEach { file: File ->
          from(zipTree(file.absoluteFile))
      }
      }
      
      1. 然后再次从右侧边栏中执行 jar 任务 (Tasks | build | jar)。

      【讨论】:

        猜你喜欢
        • 2018-06-17
        • 2016-10-13
        • 2015-09-23
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 2020-08-06
        • 2016-08-19
        相关资源
        最近更新 更多