Kotlin Compose 桌面。带有可执行文件时“无法启动 JVM”

问题描述 投票:0回答:1

我正在使用一项对我来说很新的技术 - Kotlin Compose Desktop 创建一个简单的宠物项目。该项目很原始,类似于 h2(文件中)数据库的 CRUD。所以,现在我的 gradle 任务遇到了问题

packageMsi
。当 msi 文件准备好并且我在 Windows 系统上安装程序时,当我运行 exe 文件时出现错误“无法启动 JVM”。

这是我的 gradle 脚本:

import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import kotlin.script.experimental.jvm.util.classpathFromClass

plugins {
    kotlin("jvm") version "1.9.21"
    id("org.jetbrains.compose") version "1.5.11"
}

group = "org.makariyp"
version = "1.0"

repositories {
    google()
    mavenCentral()
    maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}

dependencies {
    testImplementation("org.jetbrains.kotlin:kotlin-test:1.8.10")
    implementation(compose.desktop.currentOs)
    implementation("com.h2database:h2:2.2.224")
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile>() {
    kotlinOptions.jvmTarget = "17"
    kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
}

compose.desktop {
    application {
        mainClass = "org.makariyp.MainKt"
        nativeDistributions {
            targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
            packageName = "RepeaterNow"
            packageVersion = "1.0.0"
            modules("java.sql")
            macOS {
                iconFile.set(project.file("src\\main\\resources\\icon.icns"))
            }
            windows {
                iconFile.set(project.file("src\\main\\resources\\icon.ico"))
            }
            linux {
                iconFile.set(project.file("src\\main\\resources\\icon.png"))
            }
            buildTypes.release.proguard {
                isEnabled.set(false)
            }
        }
    }
}

首先我在

runDistributable
任务中遇到了同样的问题,但我通过在 gradle 构建文件中添加
modules("java.sql")
解决了这个问题,现在 gradle 执行了此任务并且应用程序成功运行。但我仍然对
packageMsi
有疑问。我该如何解决这个问题?

在我的建议中,问题与wix安装程序中不存在的依赖关系以及最终在exe文件中不存在的依赖关系有关。但第三天我找不到解决办法。我也尝试过不同版本的 kotlin、gradle 和 h2。

kotlin gradle executable-jar gradle-dependencies compose-desktop
1个回答
0
投票

我也遇到这个问题了,解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.