调试Jpackage可执行文件

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

我正在使用 gradle 并创建了一个 jpackage 任务。但可执行文件无法正确运行,我想看看控制台中发生了什么。为此,我的研究得出的结论是我应该在 jpackage 配置中使用

--win-console
。但结果是:

在此输入图片描述

这是我的build.gradle:

buildscript {
    ext.gradle_version = "7.1.1"
}

plugins {
    id "java"
    id "application"
    id "org.javamodularity.moduleplugin" version "1.8.12"
    id "org.openjfx.javafxplugin" version "0.0.13"
    id "org.beryx.jlink" version "2.25.0"
}

group "com.webkriativa.mypackage"
version "0.5"

var simpleitkVersion = "2.3.1"
var simpleitkLibPath = "libs/SimpleITK-" + simpleitkVersion
var simpleitkJarPath = simpleitkLibPath + "/simpleitk-" + simpleitkVersion + ".jar"
var lwjglNativesPath = "libs/lwjgl";
var dcm4chePath = "libs/dcm4che-5.31.2";
var openCVNativesWindowsPath = "libs/dcm4che-5.31.2/lib/windows-x86-64"
project.ext.lwjglVersion = "3.3.3"
project.ext.lwjglNatives = "natives-windows"

repositories {
    mavenCentral()
    maven {
        url = uri("https://maven.scijava.org/content/repositories/public/")
    }
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = "UTF-8"
}

application {
    mainModule = "com.webkriativa.mypackage"
    mainClass = "com.webkriativa.mypackage.MRETest"
}

javafx {
    version = "17.0.6"
    modules = ["javafx.controls", "javafx.fxml", "javafx.graphics"]
}

dependencies {
    //a lot of things here
}

jar {
    manifest {
        attributes "Main-Class" : "com.webkriativa.mypackage.MRETest"
    }

    duplicatesStrategy = "exclude"

}

tasks.jpackageImage.doLast {
    copy {
        from("src/main/resources")
        into("$buildDir/jpackage/$project.name/src/main/resources")
    }
    copy {
        from simpleitkLibPath
        into("$buildDir/jpackage/$project.name/runtime/bin")
        include '**/*.dll'
    }
    copy {
        from lwjglNativesPath
        into("$buildDir/jpackage/$project.name/runtime/bin")
    }
    copy {
        from dcm4chePath
        into("$buildDir/jpackage/$project.name/runtime/bin")
    }
    copy{
        from 'src'
        into("$buildDir/jpackage/$project.name")
        include 'run-noah.bat'
    }
}

jlink{
    jpackage {
        if (org.gradle.internal.os.OperatingSystem.current().windows) {
            installerOptions += ['--win-per-user-install', '--win-menu', '--win-shortcut', '--win-menu-group', '--win-dir-chooser', '--win-console']
        }
    }
}

run {
    jvmArgs = ['-Djava.library.path="' + lwjglNativesPath + ';' + openCVNativesWindowsPath + ';' + simpleitkLibPath + '"', '--add-opens', 'java.desktop/javax.imageio.stream=dcm4che.imageio.opencv',
               '--add-opens', 'java.base/java.io=dcm4che.imageio.opencv', '-Dorg.lwjgl.util.Debug=true', '-Dorg.lwjgl.util.DebugLoader=true']
}

我知道问题与 LWJGL(opengl 包装器)有关,因为在我添加此库之前它一直在工作。所以这不是 javafx/simpleitk/dcm4che 问题。

java gradle jlink jpackage
1个回答
0
投票

一般来说,要使用

jpackage
你需要知道:

  • msi
    exe
    只能在 Windows 上打包。
  • deb
    rpm
    只能在 Linux 上打包。
  • dmg
    pkg
    只能在macos上打包。

您可以执行

jpackage --help
来查看jpackage在您当前平台上可以使用的参数。

Windows下只能打包msi或exe,Linux下无法打包msi或exe。

如果你在Linux上执行jpackage --help,你将找不到

--win-console
选项。

您在 Windows 计算机上执行

jpackage --help
也是如此,您将看不到
--linux-package-name
选项。

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