【问题标题】:Can't find Main class in Jar in Kotlin application build with gradle在使用 gradle 构建的 Kotlin 应用程序的 Jar 中找不到主类
【发布时间】:2018-05-02 09:56:16
【问题描述】:

我有一个使用 gradle 构建的 javaFx Kotlin 应用程序。 这是一个包含 main 方法的文件:

package com.grined.toptal.invoice

import javafx.application.Application

fun main(args: Array<String>) {
    Application.launch(App::class.java)
}

Gradle 文件如下所示:

version = '1.4'


buildscript {
    ext.kotlin_version = '1.2.41'

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'kotlin'
apply plugin: 'application'

mainClassName = "com.grined.toptal.invoice.MainKt"

jar {
    zip64 = true
    manifest {
        attributes "Main-Class": "$mainClassName"
    }

    from {
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
dependencies {
    compile "org.mapdb:mapdb:3.0.5"
    ...
}
...

我正在打电话给gradle clean build 来制作一个罐子。

当我尝试拨打 java -jar jarName.jar 时,我看到了该错误:

Error: Could not find or load main class com.grined.toptal.invoice.MainKt

我尝试使用Main 而不是MainKt,同样的问题。另外,我检查了jar文件的内容,在需要的地方有必要的文件。

【问题讨论】:

  • gradle run 工作吗?
  • 是的,它正在工作

标签: java gradle javafx jar kotlin


【解决方案1】:

问题在于依赖org.mapdb:mapdb:3.0.5。删除它 - 解决问题。

【讨论】:

  • 我也有类似的问题。删除依赖项后,它现在可以工作了。您是否找到了一种方法来继续使用依赖项并使其工作。这个问题很奇怪。
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 2017-12-14
  • 2019-03-06
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
相关资源
最近更新 更多