Launch4j exe вылетел без сбоев или не может быть выполнен

#java #javafx #executable-jar #launch4j

#java #javafx #исполняемый файл-jar #launch4j

Вопрос:

Запуск скомпилированного исполняемого файла jar с java --module-path {$SDK_PATH} add-modules javafx.controls, javafx.fxml, javafx.media -jar frogger.jar помощью в порядке. Однако, я бы сказал, что выполнение скомпилированного exe-файла из launch4j не будет выполняться или не будет выполняться без сбоев. Есть ли что-то, что я здесь делаю неправильно? Есть ли какой-либо способ увидеть ошибку?

Я скопировал и вставил распакованный jre в объединенный каталог. Поэтому я предполагаю, что проблема либо в моей конфигурации launch4j в build.gradle, либо в неправильной версии jre.

jre, который я вставил, это AdoptOpenJDK windows x64 jdk-15.0.1 9

 plugins {
    id 'java'
    id 'org.openjfx.javafxplugin' version '0.0.9'
    id 'application'
    id 'edu.sc.seis.launch4j' version '2.4.9'
}

group 'com.tsb'
version '1.0'
mainClassName = 'com.tsb.frogger.core.Launcher'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.12'
}

javafx {
    version = '15'
    modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.media']
}

task myJavadocs(type: Javadoc) {
    source = sourceSets.main.allJava
}

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

    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

launch4j {
//    headerType = "console"
    mainClassName = "$mainClassName"
    icon = "${projectDir}/icons/frogger.ico"
    bundledJrePath = "jre"
    bundledJre64Bit = true
}
 

Комментарии:

1. Вы пробовали использовать Console тип заголовка ? Это должно позволить вам увидеть выходные данные, чтобы вы могли видеть, есть ли какие-либо исключения.

2. Проблема в том, что он открывается и закрывается мгновенно, когда консоль включена.

3. Запустите приложение из командной строки (с включенной консолью). Либо перенаправьте стандартный вывод и вывод ошибок в файл, либо включите аргументы, чтобы приложение использовало ту же консоль, с которой вы его запустили (например, в PowerShell, который вы бы включили -NoNewWindow -Wait ).

Ответ №1:

Вместо того, чтобы использовать launch4j, я рекомендую вам взглянуть на jpackage, который доступен в JDK 14 и 15. См. Руководство пользователя Packaging Tool. Обратите внимание, что для Windows вам также потребуется загрузить набор инструментов WiX.