jpackage打包后L128X1024MixRandom随机数算法不可用问题咨询
为什么添加uses指令无法解决问题
- 你使用的
L128X1024MixRandom随机数算法实现位于jdk.random模块,不属于Java核心的java.base模块。你本地直接运行代码时用的是完整JDK,默认加载了jdk.random模块,所以运行正常;但jpackage打包时默认只会裁剪包含你的模块显式依赖的模块及其传递依赖,jdk.random没有被显式依赖就会被排除。 uses java.util.random.RandomGenerator只是声明你的模块需要消费RandomGenerator类型的服务,作用是让服务加载机制能正确识别你要消费的服务类型,它不会触发模块解析逻辑自动把服务提供者模块(也就是jdk.random)加入到打包后的运行时镜像中,所以加了uses还是会找不到实现。
无需额外添加jpackage参数的解决方案
直接在你的module-info.java里添加对jdk.random模块的显式依赖即可,修改后的配置如下:
module com.example { requires java.desktop; requires jdk.random; uses java.util.random.RandomGenerator; }
添加后jpackage在模块解析阶段就会自动把jdk.random模块包含到打包后的运行时镜像中,不需要再加--add-modules jdk.random参数。
内容的提问来源于stack exchange,提问作者bourne2program
相关产品推荐
相关产品推荐

