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

JDK 11和JavaFX 11:构建ARM(修补板)未运行(哈希不匹配)

晁聪
2023-03-14

我有一个JavaFX8项目,它是我用NetBeans 8.2在Windows10上开发的。我在华硕的修补板上运行的罐子。

对于JDK11和JavaFX11,我希望利用其中的一些新特性,并希望获得一些性能增益。在安装NetBeans 10之后,在教程https://openjfx.io/openjfx-docs/#Introduction(JavaFX和NetBeans>非模块化Maven部分)的帮助下,我已经成功地移植并可以在我的Windows系统上运行该应用程序。

通过IDE或使用命令提示符:java--module-path%path_to_fx%--add-modules=javafx.c controls,javafx.fxml,javafx.graphics,javafx.media-jar praatpaal2-2.0-jar-with-dependencies.jar

与JavaFX8相比,JavaFX模块现在是作为模块添加的。

但当我在华硕Tinker Board(运行Tinker OS(Debian))上做同样的操作时,我得到以下错误:

初始化引导层java.lang.module.findException时出错:javafx.base的哈希(d87df23ee5c54c7ff062c4f8572bab8aaf6c1775854662008fccdb993957bcad)与java.base中记录的预期哈希(320C5B0FFF22FEC9DAF0C3E364F6598631B333FA95015A0F055E1C1C597C05B)不同

关于这种散列不匹配的信息很少。我的怀疑是,它要么试图加载Windows版本的JavaFX.base.jar,要么我在Maven pom.xml中使用org.openjfx,但在运行时引用了GluonHQ JavaFX,要么我的模块化设置有问题。

pom.xml的依赖项和构建部分如下所示:

<dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
            <classifier>win</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
            <classifier>win</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>11.0.2</version>
            <classifier>win</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>11.0.2</version>
            <classifier>win</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
            <classifier>linux</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
            <classifier>linux</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>11.0.2</version>
            <classifier>linux</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>11.0.2</version>
            <classifier>linux</classifier>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>net.samuelcampos</groupId>
            <artifactId>usbdrivedetector</artifactId>
            <version>2.0.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>nl.embeddedfitness.praatpaal2.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                            <manifest>
                                <mainClass>
                                    nl.embeddedfitness.praatpaal2.Main
                                </mainClass>
                            </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我已经尝试了4个JavaFX依赖项,有和没有分类器。但这没什么区别。jar-with-dependencies构建具有所有依赖项的jar,但JavaFX依赖项除外,JavaFX依赖项是我在运行时使用前面提到的java命令添加的。

对于Java 11,我使用:
https://bell-Sw.com/pages/java-11.0.2
Microsoft Windows 64位用于Windows系统
Linux ARMv7&8 32位HardFloat用于华硕修补板

共有1个答案

萧英睿
2023-03-14

在JoséPereda的帮助下,我记得我安装了lite版的Bellsoft JDK,没有JavaFX模块。我现在有了这些模块的完整版本。我假设我不需要这些,因为我将参考GluonHQ Java FX包(--add-modules)。
Bellsoft不包含JavaFX媒体,所以我现在将尝试使用Bellsoft JDK Java FX模块,但仅通过--add-modules添加媒体,尽管媒体可能只是不存在/对ARM工作(目前为止)。

 类似资料:
  • 操作系统:Windows 10 Docker版本:2.1.0.3稳定桌面社区 Docker撰写版本:1.24.1 null

  • 我试图在NetBeans 9上运行JavaFX 11,因为JDK 11不再有JavaFX了,我无法让NetBeans运行JavaFX项目,它说: 然后我从这个网站下载了javafx11https://gluonhq.com/products/javafx/,在完成教程之后,我能够正常地通过终端编译和运行JavaFX类。添加JavaFX的唯一方法是使用Maven,但即使成功构建了应用程序,我也无法运

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

  • 我正在写一个Django应用程序,需要与现有的Java播放框架应用程序一起工作。Play应用程序使用PasswordHash.java来存储密码。它以冒号分隔的格式存储密码。每个哈希都存储为::。 例如,下面是密码“测试”的条目: 在这里,我们可以通过拆分字符串并找到: 迭代次数: 盐: PBKDF2哈希:。 我修改了Django的check_密码机制以与此格式兼容,但发现它认为密码不正确。我用了

  • 我正在使用Google Maps API,觉得除了大量的语句之外,还有一种更好的方法来搜索全景图像。我认为使用外部哈希表会更有效,更容易维护。每个图像都有一个唯一的,我可以定义它。阅读哈希表,我相信我的说法是正确的,我可以做一个表和完善的函数,以获得我需要的数据,在恒定的时间。有没有一个很好的资源如何构建这个?我对哈希一点经验都没有。 我的逻辑是这样的:每个图像都以的形式保存在一个目录中,其中是一

  • 出于好奇,我正在尝试设置Eclipse,以允许它编译和运行一个带有标准库类的应用程序。 我有两个Java项目,一个包含字符串补丁类(使用一个新方法,与长度相同),另一个应该使用所述方法。设置如下: 主要的java: 编译了补丁后(从而在补丁/bin/java/lang/code>中获得了String.class),我知道我可以很容易地使用: 要正确调用新添加的方法size(),将获得5的结果。 问