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

升级到Java11 JavaFX头痛

滑乐逸
2023-03-14

今天我安装了JDK11,我所有的JavaFX东西都变得混乱了。公平地说,甲骨文可以做他们想做的事情。我试图让我的项目回到可运行的状态,这是我第一次遇到这种模块化的东西,所以不知道到底发生了什么。

我已经设法将这些库作为Maven中的依赖项导入(尽管它在Maven中找不到某些库的版本11,我最终使用11-EA+19来实现javafx-controls等--不管怎样…),所以我的代码可以很好地编译这些依赖项:

<!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11-ea+25</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>11-ea+19</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11-ea+19</version>
    </dependency>
Error: JavaFX runtime components are missing, and are required to run this application

好吧,人们似乎一直都有这个问题,因为他们没有添加“模块”。唯一的问题是,发布此消息的人没有使用maven,而是下载了存储在PC上的JavaFX SDK。Maven是以一种聪明的方式下载这些,还是我必须做同样的事情并下载一个单独的SDK?然后从那里添加模块?!在我看来有点粗制滥造...

实际上,我想知道的是我应该把什么放在--module-path中,以便能够--add-modules=javafx.controls,javafx.fxml,javafx.media,javafx.swing

为我沮丧的语气道歉。总有一天。

编辑:以下是我的整个pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cricket</groupId>
    <artifactId>CricketFX</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>11</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11-ea+25</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-swing</artifactId>
            <version>11-ea+19</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.0</version>
        </dependency>

        <!-- for timezones -->
        <dependency>
            <groupId>com.google.maps</groupId>
            <artifactId>google-maps-services</artifactId>
            <version>0.2.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
            <version>3.6.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hsqldb/hsqldb -->
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.4.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20171018</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.7</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>18.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpasyncclient</artifactId>
            <version>4.1.3</version>
        </dependency>


        <dependency>
            <groupId>io.reactivex</groupId>
            <artifactId>rxjava</artifactId>
            <version>1.2.9</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.rxjava</groupId>
            <artifactId>rxjava-apache-http</artifactId>
            <version>0.20.7</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.madgag/animated-gif-lib -->
        <dependency>
            <groupId>com.madgag</groupId>
            <artifactId>animated-gif-lib</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jcodec/jcodec -->
        <dependency>
            <groupId>org.jcodec</groupId>
            <artifactId>jcodec</artifactId>
            <version>0.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.jcodec</groupId>
            <artifactId>jcodec-javase</artifactId>
            <version>0.2.2</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>application.gui.AppStarter</mainClass>
                </configuration>
            </plugin>

        </plugins>
    </build>


</project>

exec-maven-plugin没有找到版本1.6.0,但我可以在maven网站的中央repo中清楚地看到它。到底..同样的问题,试图获得版本11的javafx libs。

编辑:解决了:我的Maven设置明显出了问题,现在使用maven-exec-plugin版本1.4.0,它可以工作了。

共有1个答案

刘星火
2023-03-14

请先把所有的11-EA+19去掉,放11我不知道为什么找不到这个版本。例如,请参见以下内容:https://mvnrepository.com/artifact/org.openjfx/javafx-controls/11

请将此插件添加到maven pom.xml中:

<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>HelloFX</mainClass>
        </configuration>
    </plugin>
</plugins>

在执行之后:

mvn compile exec:java
compile exec:java

快乐编码!

 类似资料:
  • 我从19.10升级到Ubuntu 20.04,现在我不能使用pip。 Python已安装: 但如果我试着检查pip,我会得到: 我迷路了。谢谢你的帮助 使现代化 我使用venv创建虚拟环境。当没有激活venv时,我可以使用pip3: 但是如果我激活一个venv,它就不起作用了: 感谢您的建议和持续的帮助。 使现代化 我尝试删除venv并创建一个新的venv,但似乎我需要pip工作才能做到这一点:

  • FIS 以下统称为 FIS2 简介 FIS3相对FIS2来说接口改动较大,并不是不考虑版本上的兼容,而是不愿意做简单的小修小补,希望从整体的角度打造一个易用性和可扩展性达到一个全新高度的工具。FIS2 与FIS3将并行维护,并且绝大部分插件是兼容的。 功能升级点简介 RoadMap目录定制更简单 FIS2中roadmap是最先匹配生效的,如果想覆盖解决方案的默认配置比较麻烦。FIS3中使用了类似c

  • Refer users to this document when upgrading to Babel 7. Because not every breaking change will affect every project, we've sorted the sections by the likelihood of a change breaking tests when upgradi

  • 我在旧的jetty版本中使用jetty.xml进行配置,如下所示: 已编写以下代码来调用此配置: 我试图使用jetty 9.4.43创建类似的配置: 使用新的jetty.xml,端口9096被公开,intelliJ运行所在的目录下的所有可用文件都可以访问,但FileProxyServlet url(即localhost:9096/cts/output)不可访问(显示HTTP错误404 Not Fo

  • 为了帮助大伙儿升级,我们为现在的Apache用户提供了一份重要信息的文档说明。这些只是一些简要说明,你可以从新特性文档或src/CHANGES文件中得到更多信息。 这篇文档仅仅描述了从版本 2.0 到 2.2 的变化,如果你是从1.3版进行升级的,请查考从1.3升级到2.0文档。 编译时配置的改变 编译过程与2.0版本非常相似,你曾经使用过的configure命令行(在安装目录下的build/co

  • 为了帮助大伙儿升级,我们为现在的Apache用户提供了一份重要信息的文档说明。这些只是一些简要说明,你可以从新特性文档或src/CHANGES文件中得到更多信息。 编译时配置的改变 Apache现在使用autoconf和libtool系统来进行安装进程的配置。这个系统用起来很像Apache1.3的APACI系统,但并不相同。 在普通的选择编译模块的基础上,Apache2.0把请求进程的主要部分移到