当前位置: 首页 > 知识库问答 >
问题:

无法将模块添加到jpackage创建的应用程序

谷弘致
2023-03-14

我在将jpackage创建的应用程序连接到websocketendpoint时遇到了问题。通过我的IDE运行时协商的密码在构建的映像中不可用。我似乎遇到了这里描述的问题:https://www . gubatron . com/blog/2019/04/25/solving-received-fatal-alert-handshake _ failure-error-when-performing-https-connections-on-a-custom-made-JRE-with-jlink/

我现在尝试添加jdk.crypto.cryptoki到我的jpack,但无法。

我第一次试过这个

runtime {
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
    jpackage {
        imageName = 'MyCorpDashboard'
        installerName = 'MyCorpInstaller'
        appVersion = '0.1.0'
        if(org.gradle.internal.os.OperatingSystem.current().windows) {
            jpackageHome = 'D:\\Java\\jdk-14' // Needs to be JDK 14
            installerType = 'exe'
            jvmArgs = ['-Djava.security.debug=access,stack',
                       '-Dhttps.protocols=SSLv2,TLSv1.2',
                       '-Djavax.net.debug=ssl:handshake:verbose'
                       '--add-modules', 'jdk.crypto.cryptoki']
            imageOptions = ['--win-console', '--icon','src/main/resources/com/mycorp/ui/dashboard/icon_wh.ico']
            installerOptions = ['--win-per-user-install',
                            '--win-dir-chooser',
                            '--win-menu',
                            '--win-shortcut',
                            '--vendor', 'My Corp']
        } else if (org.gradle.internal.os.OperatingSystem.current().macOsX) {
            jpackageHome = '/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home/' // Needs to be JDK 14
            imageOptions = ['--vendor', 'My Corp',
                            '--icon','src/main/resources/com/mycorp/ui/dashboard/icon_wh.icns']
        }
    }
}

但是得到

Error occurred during initialization of boot layer
java.lang.module.FindException: Module jdk.crypto.cryptoki not found

我也试过

compileJava {
    options.compilerArgs += ["--add-modules", "jdk.crypto.cryptoki"]
}

这也不管用。

如何添加此模块,以便将其与我的应用程序打包在一起?

共有1个答案

沙岳
2023-03-14

oi -就在发布后,我想我现在看到了,在运行时(重访https://badass-runtime-plugin.beryx.org/releases/latest/后)

runtime {
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
    modules = ['jdk.crypto.cryptoki']
    jpackage {
        imageName = 'MyCorpDashboard'
        installerName = 'MyCorpInstaller'
        appVersion = '0.1.0'
        if(org.gradle.internal.os.OperatingSystem.current().windows) {
            jpackageHome = 'D:\\Java\\jdk-14' // Needs to be JDK 14
            installerType = 'exe'
            jvmArgs = ['-Djava.security.debug=access,stack',
                       '-Dhttps.protocols=SSLv2,TLSv1.2',
                       '-Djavax.net.debug=ssl:handshake:verbose']
            imageOptions = ['--win-console', '--icon','src/main/resources/com/mycorp/ui/dashboard/icon_wh.ico']
            installerOptions = ['--win-per-user-install',
                            '--win-dir-chooser',
                            '--win-menu',
                            '--win-shortcut',
                            '--vendor', 'My Corp']
        } else if (org.gradle.internal.os.OperatingSystem.current().macOsX) {
            jpackageHome = '/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home/' // Needs to be JDK 14
            imageOptions = ['--vendor', 'My Corp',
                            '--icon','src/main/resources/com/mycorp/ui/dashboard/icon_wh.icns']
        }
    }
}
 类似资料:
  • 我正在使用Java15的jpackage为我的javafx应用程序创建一个安装程序。因为其中一个库需要一些visual c DLL,所以我也想包括它们。它们应该放在主目录中。exe和。ico居住。 我不明白如何写overrides.wxi来实现这一点。https://docs.oracle.com/en/java/javase/14/jpackage/override-jpackage-resou

  • 我已在项目文件夹中安装了模块: ####################################################################################################### NPM警告可选跳过可选依赖性:fsevents@1.2.7(node_modules/fsecents): NPM警告不支持跳过选项依赖性:不支持fsevent

  • 问题内容: 我想在我的Ember-CLI应用程序中使用此Node.js模块https://www.npmjs.com/package/remarkable- regexp 。 如何使它可用于Ember应用程序? 我通过将其添加到 但是它失败了: 路径或模式“ node_modules / remarkable-regexp / index.js”与任何文件都不匹配 问题答案: 既然是npm模块,我

  • 问题内容: 我一直在寻找创建模块化Web应用程序的解决方案,该模块是模块化的,即用户可以以简单jar的形式提供自己的插件,然后将其自身的数据提供给我的Web应用程序,而我的webapp将负责用于显示它。 现在的问题是,我希望我的Web应用程序尽可能通用,而不依赖于j2ee Web容器来支持任何内容。即,我不能依靠我的Web容器来提供osgi支持并将Web应用程序作为osgi捆绑包本身部署(这确实使

  • 问题内容: 我有一个定义明确的界面的应用程序。它使用CDI解析模块(具体地说,它使用API​​接口上的Instance <>注入点来解析模块),并通过接口将各种数据传回第四个,而不会出现问题。我故意将API和实现分开,并且模块仅从API继承以避免紧密耦合,并且应用程序仅通过运行时相关性以及通过API完成的数据传递来了解模块。应用程序在没有模块的情况下运行良好,只需将jar放到WEB- INF /

  • 问题内容: 之前我使用模块在请求中添加标头。现在,我正在对该模块尝试相同的操作。 这是我正在使用的python请求模块:http : //pypi.python.org/pypi/requests 如何向和添加标头。说我必须在标题的每个请求中添加密钥。 问题答案: 从http://docs.python- requests.org/en/latest/user/quickstart/ 您只需要用标