新しい乱数生成アルゴリズムの 1 つを使用しています ( https://openjdk.java.net/jeps/356 ):
RandomGeneratorFactory.of("L128X1024MixRandom").create().nextDouble();
そして、それは機能します。jpackage ツール ( https://openjdk.java.net/jeps/392 )を使用した後を除く
例外が発生します
乱数生成アルゴリズム「L128X1024MixRandom」の実装は利用できません
uses
module-info.java でサービスの使用を指定するディレクティブを追加してみました ( https://docs.oracle.com/javase/specs/jls/se17/html/jls-7.html#jls-7.7.3 )
uses java.util.random.RandomGenerator;
しかし、それはそれを修正しないか、そこにいることに問題があるようです(私はそれを間違って使用していますか?これが解決策になるはずだと思います)。
代わりに、jpackage オプションを追加する必要があります。
--add-modules jdk.random
再現手順
1. ファイルを含むディレクトリを作成します。
rngTest/com/example/Test.java
package com.example;
import javax.swing.JOptionPane;
import java.util.random.RandomGeneratorFactory;
public class Test {
public static void main(String[] args) throws Exception {
try {
JOptionPane.showMessageDialog(null, "nextDouble: " + RandomGeneratorFactory.of("L128X1024MixRandom").create().nextDouble());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Exception: " + e.getMessage());
}
}
}
rngTest/module-info.java
module com.example {
requires java.desktop;
uses java.util.random.RandomGenerator;
}
rngTest/manifest.txt
Manifest-Version: 1.0
Created-By: 17.0.1
Build-Jdk-Spec: 17
Main-Class: com.example.Test
2. rngTest ディレクトリからコマンドを実行します
--type dmg
(macOS の場合。他のプラットフォームでは変更が必要です。https://openjdk.java.net/jeps/392を参照してください)
find . -name "*.java" > sources.txt
javac @sources.txt -d target
mkdir -p lib; cd target; jar cfm ../lib/test.jar ../manifest.txt *; cd ..
${JAVA_HOME}/bin/jpackage --module-path lib --module com.example/com.example.Test --type dmg --name Test
3. 作成したインストーラーを実行し、インストールしたアプリケーションを実行します
例外メッセージに注意してください。
ここで jpackage コマンドを再実行し--add-modules jdk.random
、手順 3 を繰り返します。成功したことを確認します。
${JAVA_HOME}/bin/jpackage --module-path lib --module com.example/com.example.Test --type dmg --name Test --add-modules jdk.random