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

javafx。在JavaFX 11/JDK 11.0中找不到控件。1[副本]

郎聪
2023-03-14

我正在使用InteliJ,我已经经历了所有其他似乎对其他人都有效的解决方案。我遇到了一个错误:

Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x5782d366) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x5782d366

然后,我在运行配置中将以下选项添加到VM选项中:

--module-path="C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib" \ 
    --add-modules=javafx.controls \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED

这似乎部分解决了问题?然而,当我试图运行它时,我没有得到一大堆错误的痕迹,我得到了这三行:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" \
    --module-path=C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib \
    --add-modules=javafx.controls,javafx.fxml \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED \
    --add-modules javafx.base,javafx.graphics \
    --add-reads javafx.base=ALL-UNNAMED \
    --add-reads javafx.graphics=ALL-UNNAMED \
    "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3\lib\idea_rt.jar=60572:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3\bin" \
    -Dfile.encoding=UTF-8 \
    -classpath C:\Users\mresp_000\Desktop\Business\Code\VirtualBeats\out\production\VirtualBeats;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\src.zip;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx-swt.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.web.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.base.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.fxml.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.media.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.swing.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.controls.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.graphics.jar \
    -p C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.base.jar;\
        C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib\javafx.graphics.jar \
    virtualbeats.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

Process finished with exit code 1

当我只在VM选项中输入以下内容时,我得到了相同的错误:

--module-path="C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib"
--add-modules=javafx.controls,javafx.fxml

这是我的运行选项的图片(我已经勾选和取消勾选了“包含依赖项和G提供的范围”框,这两个选项都不起作用。

图书馆指向了正确的地方,我试图重建这个项目,但没有任何效果。当我转到命令行并键入:

dir "C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib"

所以事实上,一切都在那里,指向它需要指向的确切位置。将. jar扩展添加到add模块也没有任何作用。

共有2个答案

扶高歌
2023-03-14

或者,将项目转换为Maven,然后添加JavaFX依赖项,如下所示:

<!-- JavaFx -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-base</artifactId>
            <version>15</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>15</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics </artifactId>
            <version>15</version>
            <classifier>win</classifier>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>15</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>15</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>15</version>
        </dependency>

         <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-swing</artifactId>
            <version>15</version>
        </dependency>

根据您使用的Java版本更改版本,因为Java10以上的任何内容都不包括JavaFX库,如果您仍然想在其他机器上部署应用程序,我建议您这样做

詹甫
2023-03-14

尝试:

--module-path C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib --add-modules=ALL-MODULE-PATH

作为运行配置,我不知道,也许它有效?

 类似资料:
  • 我正在使用Eclipse和PowerShell。我已经用Eclipse将一个java项目导出到一个可运行的JAR(test13.05.jar)中,我想从PowerShell打开它。这个项目使用javafx,所以我已经将javafx-sdk-17.0.2文件复制到包含我的项目的文件夹中。 然后,我用PowerShell进入这个文件夹,键入 结果是: 错误:JavaFX运行时组件丢失,并且需要运行此应

  • 我在两个文件中有两个JPMS模块:和。Modulea需要模块。我需要在新图层中使用这些模块,所以我这样做: 我以为JDK模块会自动加载,但我发现 同时当我做:时,输出是: 怎么修?

  • 我想下载SceneBuilder并找到了oracle的文档: “要安装: 从Java SE下载页面的附加资源部分下载JavaFX Scene Builder,网址是http://www.oracle.com/technetwork/Java/javase/Downloads/index.html。 在JavaFX Scene Builder2.0部分中,如果您同意许可协议的条款,就接受许可协议。“

  • 这是我的第一个问题,所以如果我搞错了,请原谅我,但是我有一个关于FXMLLoader的奇怪问题,我无法解释自己,所以任何提示或帮助都将非常感谢。 下面的片段是我如何将文件GraphicSettings.fxml加载到程序中的。 此代码段的输出如下: 按照我的理解,文件是在正确的位置找到的,并且它提供给FXMLLoader的URL也是正确的,但是由于某种原因,FXMLLoader找不到文件。 现在,

  • 我在Scene Builder中为Eclipse中的JavaFX项目创建了一个非常简单的fxml。当我尝试运行它时,由于未找到controller类,我得到了LoadException。 附加的包资源管理器和错误的截图 如果你能告诉我是什么原因造成这个问题,我将不胜感激。

  • 刚刚开始一个新项目,已经遇到了一些问题。我试图用javafx显示图像,但编译器抱怨提供的位置无效。这是我到目前为止的所有代码(除了一些导入): 如果我将文件路径更改为我在谷歌图像搜索中找到的图像url,它会显示添加在其下方的黑色矩形(只是为了测试一切是否正常),但不会显示图像。但是,在当前配置中,它只是抛出一个错误,表示URL无效或找不到资源。我认为这应该有效的原因是以下示例:https://do