在使用gradle的Kotlin应用程序构建中找不到Jar中的Main类

时间:2018-05-02 09:56:17

标签: java gradle javafx jar kotlin

我有一个带有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文件的内容,并且在必要的地方有一个必要的文件。

1 个答案:

答案 0 :(得分:1)

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