【问题标题】:trying to create a jar executable in IntelliJ IDEA试图在 IntelliJ IDEA 中创建 jar 可执行文件
【发布时间】:2019-09-28 16:14:45
【问题描述】:

我正在尝试为 tornadofx 项目构建一个 jar 文件,

当我在 my.kt 中运行 main 函数时它会正常运行 (seri/src/main/kotlin/my.kt)

package com.serious

import tornadofx.*
import tornadofx.App
import tornadofx.launch

fun main() {
    launch<MyApp>()
}

class MyApp : App(primaryView = ViewX::class)
//-------------------------
class ViewX : View("My View") {

    override val root = vbox {

        button("add an item") {

        }
    }
}

build.gradle 文件

buildscript {
    ext.kotlin_version = "1.2.60"
    ext.tornadofx_version = "1.7.17"
    ext.junit_version = "5.1.0"

    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.junit.platform:junit-platform-gradle-plugin:1.1.0"
    }
}

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.31'
    id 'org.openjfx.javafxplugin' version '0.0.7'

}

version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'no.tornado:tornadofx:1.7.18'

}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

javafx {
    version = "12.0.1"
    modules = ['javafx.controls']
}

运行 Windows 10,Intelli IDEA 2019.1.1 我在项目结构中制作了一个 jar 工件,并从构建菜单中“构建工件”,它构建了一个 jar 文件但它没有运行,显示错误“错误:无法找到或加载主类 com.serious.MyApp 引起:java.lang.NoClassDefFoundError: tornadofx/App "

【问题讨论】:

    标签: java intellij-idea javafx kotlin tornadofx


    【解决方案1】:

    不确定这是否是最佳解决方案,但您可以使用 shadow 插件进行 gradle。它允许轻松创建胖/超级 JAR。您需要做的就是稍微修改一下您的 build.gradle 文件:

    plugins {
        id "application"
        id "org.jetbrains.kotlin.jvm" version "1.3.11"
        id "com.github.johnrengelman.shadow" version "4.0.2" // 5.0.0 for gradle 5.0+
    }
    
    mainClassName = "com.serious.MyKt"
    
    repositories {
        mavenLocal()
        mavenCentral()
        maven {
            url "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    
    ext {
        tornadofx_version = "1.7.18"
        junit_version = "5.4.0"
    }
    
    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib"
        implementation "no.tornado:tornadofx:$tornadofx_version"
        testImplementation "org.junit.jupiter:junit-jupiter:$junit_version"
    }
    
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
    test {
        useJUnitPlatform()
    }
    

    然后运行一个名为“shadowJar”的任务。胖罐子会被放入/build/libs/。

    【讨论】:

      【解决方案2】:

      Intellij Gradle

      最简单的方法是点击 Gradle -> build -> bootJar

      Fat jar 将在 build/libs 文件夹中创建

      【讨论】:

        猜你喜欢
        • 2013-06-06
        • 2014-07-29
        • 2017-11-14
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多