JavaFX的部署库在积极JDK未发现JavaFX的部署库在积极JDK未发现(JavaFX depl

2019-05-12 06:33发布

我迁移到OpenJDK的11和11的OpenJFX我已经成功地构建两个从所述源,并且每的OpenJFX维基所使用的--with导入模块= [path_to_modular_sdk]精氨酸到构建JDK。 一切顺利,直到我尝试建立在Apache中的Netbeans 9简单的“Hello World”的测试项目; 在这一点上,我得到以下错误:“ 在积极的JDK找不到JavaFX的部署库 ”。 试图寻找这个信息,但找不到任何相关信息。 如果任何人都可以摆脱是什么原因造成这样的光线,我会非常感激。 谢谢你的帮助。 帕特里克。

Answer 1:

作为@mipa指出,你不需要为了迁移现有的项目,以建立既不Java的11也不JavaFX的11。

至于阿帕奇的NetBeans 9.0,为JavaFX项目当前Ant构建文件不支持JavaFX的11呢。 它总是在寻找JavaFX的罐子,如果找不到它,它就会停止。 这是某种传统的从旧天(8的Java之前),当JavaFX的不是JDK的一部分,你必须手动添加的罐子。

例如,当您尝试创建一个新的JavaFX项目时,您将收到此错误:

但是,这并不意味着你不能运行JavaFX的11,有或无的NetBeans 9.0。

运行在终端

您可以从一个端的Java / JavaFX的11项目。 您可以按照本入门指南通过详细的一步一步。

简而言之,所有你需要的是:

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

其中HelloFX.java是:

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

}

模块化项目

创建的NetBeans 9.0模块化项目,并添加一个模块(为简单起见,我把它命名为javafx11 ,这是不推荐的名称)。

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

这个库只是在我当地的JavaFX的下载文件夹: /Users/<user>/Downloads/javafx-sdk-11/lib/ 。 当然,如果你自己已经建立了它,你可以指向该位置代替。

现在我可以定义模块:

module javafx11 {
    requires javafx.controls;

    exports javafx11;
}

和上述添加HelloFX类到javafx11包。

现在,该项目将运行完美的罚款。

即使你还在用ant ,在这种情况下,构建文件被更新到模块路径的变化,并没有什么具体的JavaFX,所以该项目没有任何问题运行。

Java项目

如果模块化项目工程,那么一个普通的Java项目也能发挥作用的NetBeans 9.0。

创建一个Java项目(同样,没有一个JavaFX项目),JavaFX的库添加到模块路径上面,现在你需要添加这些VM选项都为编译和运行:

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

该项目应运行正常。

Maven的

另一种方法是使用蚂蚁Maven的或摇篮代替。

只要创建一个Maven - > JavaFX项目,修改pom.xml文件,并添加了JavaFX的依赖关系:

<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>

干净,建造和从NetBeans中运行,它应该只是罚款。

对于摇篮,同样可以做到,如果包括摇篮插件的NetBeans。



Answer 2:

你说你要迁移到OpenJDK11 / OpenJFX11但是你为什么通过建立双方的JDK和JFX自己开始这项工作? 这将是更容易只是下载一个EA从这里建立http://jdk.java.net/11/这里http://jdk.java.net/openjfx/此外,与JDK11 JavaFX的开始不是的一部分JDK了,所以它可以单独从JDK建。 我不知道你的构建指示是最新的。



Answer 3:

这是一个与Netbeans的9个问题我已经使用了Sun JDK,现在是Oracle JDK多年与NetBeans。 在NetBeans 7.2有手动添加JFX jar文件的选项。 然后,JFX嵌入到甲骨文JDK8,而选项现在不可用。 几个星期前,我被告知,甲骨文JDK不会是免费的了明年,所以我开始迁移到打开JDK10和我有同样的问题,你。 这是因为打开JFX没有嵌入到打开JDK。 如果您使用Oracle JDK11这已经是GA试试,你会不会有建筑JFX应用程序的任何问题。 问题是,当你设置在NetBeans作为Java平台的开放JDK,它希望JFX是JDK本身里面,但Netbeans的不会问你一个JFX文件夹或类似的东西在早期版本中。



文章来源: JavaFX deployment library not found in active JDK