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

在活动JDK中找不到JavaFX部署库

夏侯昆琦
2023-03-14

我正在迁移到OpenJDK11和OpenJFX11。我已经成功地从源代码构建了这两个代码,并且根据OpenJFX,wiki使用--with-import-modules=[path_to_modular_sdk]arg构建了JDK。一切都很顺利,直到我尝试在Apache Netbeans 9中构建一个简单的“Hello World”测试项目;此时,我得到以下错误:“在active JDK中没有找到JavaFX部署库”。试图搜索这方面的信息,但找不到任何相关的东西。如果有人能解释是什么导致了这一点,我将非常感谢。谢谢你的帮助。帕特里克。

共有1个答案

盖翰池
2023-03-14

正如@mipa指出的,您不需要构建Java11或JavaFX11来迁移现有的项目。

至于Apache NetBeans9.0,当前用于JavaFX项目的ant构建文件还不支持JavaFX11。它总是在寻找JavaFX jar,当找不到它时,它就会停止。这是旧时代(Java8之前)遗留下来的,当时JavaFX不是JDK的一部分,您必须手动添加jar。

例如,当您试图创建一个新的JavaFX项目时,您将得到以下错误:

export PATH_TO_FX=/path/to/javafx-sdk-11/lib
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
java --module-path $PATH_TO_FX --add-modules=javafx.controls 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 version = System.getProperty("java.version");
        Label l = new Label ("Hello, JavaFX 11, running on " + version);
        Scene scene = new Scene(new StackPane(l), 300, 200);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

在添加代码之前,让我们将JavaFX库添加到模块路径中。

这个库只是我本地下载的JavaFX:/users/ /downloads/javafx-sdk-11/lib/ 下的文件夹。当然,如果您自己构建了它,您可以指向那个位置。

现在我可以定义模块:

module javafx11 {
    requires javafx.controls;

    exports javafx11;
}

如果模块化项目可以工作,那么普通的Java项目也可以在NetBeans9.0上工作。

创建一个Java项目(同样,不是JavaFX项目),将JavaFX库添加到上面的模块路径中,现在您需要添加以下用于编译和运行的VM选项:

 --module-path=/path/to/javafx-sdk-11/lib --add-modules=javafx.controls

这个项目应该运行良好。

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11-ea+23</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11-ea+23</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <release>11</release>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                    <version>6.1.1</version>
                    <!--  Use newer version of ASM  -->
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>javafx11.HelloFX</mainClass>
                </configuration>
        </plugin>
    </plugins>
</build>

对于Gradle,如果包含NetBeans的Gradle插件,也可以做到这一点。

 类似资料:
  • 我正在使用InteliJ,我已经浏览了所有其他似乎对其他人都有效的解决方案。我得到了一个错误: 然后,我在运行配置中向VM添加了以下选项: 这似乎部分解决了问题?但是,当我尝试运行它时,我没有得到完整的错误堆栈跟踪,我得到以下三行:

  • 我正在使用InteliJ,我已经经历了所有其他似乎对其他人都有效的解决方案。我遇到了一个错误: 然后,我在运行配置中将以下选项添加到VM选项中: 这似乎部分解决了问题?然而,当我试图运行它时,我没有得到一大堆错误的痕迹,我得到了这三行: 当我只在VM选项中输入以下内容时,我得到了相同的错误: 这是我的运行选项的图片(我已经勾选和取消勾选了“包含依赖项和G提供的范围”框,这两个选项都不起作用。 图书

  • 问题内容: 我正在尝试进入JAX-RS。我的项目jdk设置为1.7.03。JAX-RS(javax.ws.rs)的注释必须定义吗?如果没有,我在哪里可以找到它们? 问题答案: 这些类( JSR 311:JAX-RS:RESTful Web服务的JavaTM API )不属于JDK。您需要在CLASSPATH中包含适当的JAR文件。您可以在maven仓库中找到该API 。 还检查了Apache的CX

  • 我刚刚升级到Android Studio0.2.8,当我尝试编辑运行配置时,出现了一个错误,上面写着“找不到默认活动”。 请让我知道我能做些什么来解决这个问题。

  • 我正在用SDK 28创建一个新的android项目,当项目完成创建时,我在MainActivity中出现了一个错误。 我尝试了一些方法: 清洁项目 清理Android Studio缓存 清理Gradle缓存 重新安装的 IDE 文件- 删除 .idea 文件夹 重新启动Android Studio。 Android Studio关于: build.gradle(模块:应用程序) MainActiv

  • 以下是将使用此库的其他项目的文件 请注意: > 此库作为模块项目运行良好, 以下是我目前面临的流程和问题 > 我正在开发一个与特定条形码扫描器硬件通信的库的沙箱版本,因为开发人员不一定拥有他们将使用库的沙箱版本的硬件,该版本允许开发人员将其设备摄像机用作条形码扫描器, 我们希望开发人员从提供的中提取文件和并使用它们中的任何一个