错误:java.xml(…)的哈希与java.base中记录的预期哈希(…)不同
创建简单的JavaFX11“HelloWorld”应用程序。 创建自定义JRE时出错错误:java.xml(…)的哈希与java.base中记录的预期哈希(…)不同,java,javafx,java-11,javafx-11,jlink,Java,Javafx,Java 11,Javafx 11,Jlink,创建简单的JavaFX11“HelloWorld”应用程序。 创建自定义JRE时出错 user@user:~/Desktop/javafx/hellofx$ ./run.sh Error: Hash of java.xml (c043b4c28b897656e2a4d36c92ba2f5d52134bce79643236dd36295e14178be7) differs to expected hash (4e7db7fc941d9f316c4aafe02717b5809ee722be8433
user@user:~/Desktop/javafx/hellofx$ ./run.sh
Error: Hash of java.xml (c043b4c28b897656e2a4d36c92ba2f5d52134bce79643236dd36295e14178be7) differs to expected hash (4e7db7fc941d9f316c4aafe02717b5809ee722be8433d283050365e7fd49331f) recorded in java.base
错误代码:
$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules hellofx --output hellofx #error
操作系统:ubuntu 19.10
$java——版本
openjdk 11.0.6 2020-01-14
OpenJDK运行时环境(构建11.0.6+10-post-Ubuntu-1ubuntu119.10.1)
OpenJDK 64位服务器虚拟机(构建11.0.6+10-post-Ubuntu-1ubuntu119.10.1,混合模式,共享)
$javac——版本
JavaC11.0.6
user@user:~/Desktop/javafx/hellofx$ tree
.
├── mods
│ └── hellofx
│ ├── hellofx
│ │ └── HelloFX.class
│ └── module-info.class
├── run.sh
└── src
├── hellofx
│ └── HelloFX.java
└── module-info.java
5 directories, 5 files
run.sh:
user@user:~/Desktop/javafx/hellofx$ cat run.sh
export PATH_TO_FX=/home/sameep/javafx-sdk-11.0.2/lib
export PATH_TO_FX_MODS=/home/sameep/javafx-jmods-11.0.2
javac --module-path $PATH_TO_FX -d mods/hellofx $(find src -name "*.java")
java --module-path $PATH_TO_FX:mods -m hellofx/hellofx.HelloFX
$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules hellofx --output hellofx #error
#hellofx/bin/java -m hellofx/hellofx.HelloFX
module-info.java:
user@user:~/Desktop/javafx/hellofx/src$ cat module-info.java
module hellofx {
requires javafx.controls;
exports hellofx;
}
HelloFX.java:
user@user:~/Desktop/javafx/hellofx/src/hellofx$ cat HelloFX.java
package hellofx;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
Scene scene = new Scene(new StackPane(l), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
您可以在、和等链接中找到。这很可能是JDK构建问题,并恢复到较旧的
java。版本如11.0.2应该可以解决此问题
您可以同时订阅以获取进一步更新
什么时候会发生这种情况,是什么原因造成的
如果为模块创建的jmod
文件在生成哈希时不一致,则可能发生这种情况。您可以参考文档,其中详细说明了对此负责的一个参数
--hash-modules regex-pattern
确定叶模块并记录依赖项的哈希值
直接和间接地需要它们,基于
与给定正则表达式模式匹配的模块。散列被记录下来
在正在创建的JMOD归档文件中,或在JMOD归档文件或模块中
jmod hash命令指定的模块路径上的JAR
此外,在沉降段中
。。。这允许您允许将包导出到一个或多个服务器
专门命名的模块,而不是通过合格的导出提供给其他模块。
运行时验证记录的模块哈希值是否与
在运行时解决;否则,运行时将返回一个错误