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

错误:java的哈希。xml(…)不同于预期的哈希(…)用java记录的。基础

邵锐
2023-03-14

创建简单的javafx 11“hello world”应用程序。创建自定义JRE时出错。

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-版本javac 11.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

跑上海:

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

模块信息。爪哇:

user@user:~/Desktop/javafx/hellofx/src$ cat module-info.java 
module hellofx {
    requires javafx.controls;

    exports hellofx;
}

HelloFX。爪哇:

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();
    }

}

输出窗口截图

共有1个答案

桑宇
2023-03-14

正如你可以在这样的链接,这和这。这更有可能是JDK构建问题,并恢复到较旧的java。版本如11.0.2应能解决此问题。

您可以同时订阅openjdk build/issues/1214以获取进一步更新。

什么时候会发生这种情况,什么会导致这种情况?

如果为模块创建的jmod文件在生成哈希时不一致,可能会发生这种情况。您可以参考JMOD工具文档,该文档详细阐述了导致这种情况的一个参数

--hash-modules regex-pattern

根据匹配给定正则表达式模式的模块的模块图,确定叶子模块并记录直接和间接需要它们的依赖项的哈希值。哈希值记录在正在创建的JMOD存档文件中,或jmod哈希命令指定的模块路径上的JMOD存档或模块化JAR中。

此外,在下沉部分描述了

... 这允许您允许将包导出到一个或多个特定命名的模块,而不允许通过合格的导出导出到其他模块。运行时验证记录的模块哈希是否与运行时解析的哈希匹配;否则,运行时将返回一个错误。

 类似资料:
  • 创建简单的JavaFX11“Hello World”应用程序。创建自定义JRE时出错。 run.sh: module-info.java: hellofx.java: 输出窗口截图

  • 问题内容: 我正在使用网络爬虫(请不要建议现有的,这不是一种选择)。我按照预期的方式工作。我唯一的问题是,当前我正在使用一种服务器/客户端模型,其中服务器进行爬网和处理数据,然后将其放置在中央位置。 此位置是从我编写的类创建的对象。在内部,该类维护一个定义为 我将数据存储在地图中,使网址成为键(我保持这些网址唯一),而hasmap值存储该网址的相应数据字段,例如标题,值等 我偶尔会序列化所使用的内

  • 问题内容: 我对加密/哈希知之甚少。 我必须对加密密钥进行哈希处理。Java中的示例是这样的… 现在,如果我错了,请纠正我,但是上面的代码使用MD5算法对字符串进行了哈希处理。 当我在C#中哈希相同的字符串时,我希望得到相同的结果。 我当前的C#代码看起来像这样… 但是末字节结果不匹配。 Java得到… C#得到… 我需要C#代码才能获得与Java代码相同的结果(不是相反),有什么想法吗? 谢谢。

  • 考虑@data是一个带有日期、类、名称和等级字段的Active记录数组。假设我想以两个哈希结束,一个是每个名称的所有日期的唯一集合;另一个按类、日期和名称细分以显示等级。 > 导致错误: nil:NilClass的未定义方法“[]=”

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加

  • 我正在开发一款Android应用程序。在我的应用程序中,我集成了Facebook登录。我的facebook登录工作正常。但当我制作release apk并运行该应用程序并尝试登录Facebook时,它就不工作了。请看下面我的场景。 我生成如下的发布apk 然后我使用jks文件路径生成keyhash。 我得到了一个散列键,然后将其添加到开发人员配置文件设置中。 当我在我的设备上安装并运行apk并使用