我迁移到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文件夹或类似的东西在早期版本中。