Pan*_*ndi 7 java javafx jlink java-11 javafx-11
创建简单的 javafx 11“hello world”应用程序。\n创建自定义 JRE 时出现错误。
\nuser@user:~/Desktop/javafx/hellofx$ ./run.sh \nError: Hash of java.xml (c043b4c28b897656e2a4d36c92ba2f5d52134bce79643236dd36295e14178be7) differs to expected hash (4e7db7fc941d9f316c4aafe02717b5809ee722be8433d283050365e7fd49331f) recorded in java.base\nRun Code Online (Sandbox Code Playgroud)\n错误代码:
\n$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules hellofx --output hellofx #error\nRun Code Online (Sandbox Code Playgroud)\n操作系统:ubuntu 19.10
\n$java --version\nopenjdk 11.0.6 2020-01-14\nOpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1)\nOpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1, mixed mode, sharing)\nRun Code Online (Sandbox Code Playgroud)\n$javac --version\njavac 11.0.6\nRun Code Online (Sandbox Code Playgroud)\nuser@user:~/Desktop/javafx/hellofx$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mods\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hellofx\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hellofx\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 HelloFX.class\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module-info.class\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 run.sh\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hellofx\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 HelloFX.java\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module-info.java\n\n5 directories, 5 files\n\nRun Code Online (Sandbox Code Playgroud)\n运行.sh:
\nuser@user:~/Desktop/javafx/hellofx$ cat run.sh \nexport PATH_TO_FX=/home/sameep/javafx-sdk-11.0.2/lib\nexport PATH_TO_FX_MODS=/home/sameep/javafx-jmods-11.0.2\njavac --module-path $PATH_TO_FX -d mods/hellofx $(find src -name "*.java")\n\njava --module-path $PATH_TO_FX:mods -m hellofx/hellofx.HelloFX\n\n$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules hellofx --output hellofx #error\n#hellofx/bin/java -m hellofx/hellofx.HelloFX\n\nRun Code Online (Sandbox Code Playgroud)\n模块信息.java:
\nuser@user:~/Desktop/javafx/hellofx/src$ cat module-info.java \nmodule hellofx {\n requires javafx.controls;\n\n exports hellofx;\n}\nRun Code Online (Sandbox Code Playgroud)\nHelloFX.java:
\nuser@user:~/Desktop/javafx/hellofx/src/hellofx$ cat HelloFX.java \npackage hellofx;\n\nimport javafx.application.Application;\nimport javafx.scene.Scene;\nimport javafx.scene.control.Label;\nimport javafx.scene.layout.StackPane;\nimport javafx.stage.Stage;\n\n\npublic class HelloFX extends Application {\n\n @Override\n public void start(Stage stage) {\n String javaVersion = System.getProperty("java.version");\n String javafxVersion = System.getProperty("javafx.version");\n Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");\n Scene scene = new Scene(new StackPane(l), 640, 480);\n stage.setScene(scene);\n stage.show();\n }\n\n public static void main(String[] args) {\n launch();\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n
您可以点击此、此和此等链接。更有可能是 JDK 构建问题并恢复到较旧的版本java.version(例如 11.0.2)应该可以解决此问题。
同时您可以订阅openjdk-build/issues/1214以获取更多更新。
\n\n\n\n\n什么时候会发生这种情况以及什么可能导致这种情况?
\n
如果jmod为模块创建的文件在生成哈希时不一致,则可能会发生这种情况。您可以参考JMOD 工具文档,其中详细说明了导致此问题的参数之一
--hash-modules regex-pattern\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n根据与给定正则表达式模式匹配的模块的模块图,确定叶模块并记录直接和间接需要它们的依赖项的哈希值。哈希值记录在正在创建的 JMOD 存档文件中,或者jmod hash 命令指定的模块路径上的 JMOD 存档或模块化 JAR 中。
\n
此外,在一个沉降的部分中描述了
\n\n\n\n...这让\xe2\x80\x99s您允许将包导出到一个或多个\n特定命名的模块,并且不能通过合格的导出导出到其他模块。\n运行时 验证模块记录的哈希是否匹配在运行时解决的问题;如果不是,运行时将返回错误。
\n
| 归档时间: |
|
| 查看次数: |
3703 次 |
| 最近记录: |