我已经下载了JavaFX SDK,将其解压缩并在this instructions之后设置一个PATH_TO_FX
系统变量。我使用以下代码示例:
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 javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
Scene scene = new Scene(new StackPane(l), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
尝试使用建议的模式进行编译:
javac --module-path $ PATH_TO_FX --add-modules javafx.controls HelloFX.java
但是编译器抛出错误:找不到模块:javafx.controls。 Windows10。Java和JavaFX版本为11.0.1
再次:我添加了-add-modules javafx.controls
行答案 0 :(得分:4)
我还必须包括'lib'目录:--module-path %PATH_TO_FX%;%PATH_TO_FX%\lib
才能进行编译。
答案 1 :(得分:0)
我使用的是gradle
,低于build.gralde
的版本对我来说效果很好(org.beryx.jlink
是构建独立发行版的可选选项)。
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.5'
id "org.beryx.jlink" version "2.3.0" //optional for jlink
}
repositories {
mavenCentral()
}
javafx {
modules = [ 'javafx.controls' ]
}
mainClassName = 'gui.Main'
答案 2 :(得分:0)
问题通过3步解决。
在命令行中使用%PATH_TO_FX%代替 $ PATH_TO_FX 。
重新创建变量(系统变量和用户变量) PATH_TO_FX ,将其值括在引号中。由于目录“ C:\ Program Files \ Java \ javafx-sdk-11.0.1 \” 包含空格,因此会导致错误“无效标志”。
重新启动计算机以更新变量。
答案 3 :(得分:0)
由于JavaFX未包含在“默认” JDK中,因此我发现针对此类问题的最简单解决方案是使用Bellsoftware的LibericaJDK(11+),该软件再次包含JavaFX,从而使开发和运行JavaFX更加容易应用程序。
答案 4 :(得分:0)
确保模块列表中没有空格:
--module-path PATH_TO_JAVAFX/lib --add-modules javafx.swing,javafx.graphics,javafx.fxml,javafx.media,javafx.controls
答案 5 :(得分:0)
helloFX.bat @回声关闭 cls 设置PATH_TO_FX =“ C:\ Program Files \ Java \ javafx-sdk-11.0.2 \ lib” C: cd \ development \ java \ javaFX
rem javac --module-path%PATH_TO_FX%--add-modules javafx.controls,javafx.fxml HelloFX.java javac --module-path%PATH_TO_FX%--add-modules javafx.controls HelloFX.java
java --module-path%PATH_TO_FX%--add-modules javafx.controls HelloFX
暂停
答案 6 :(得分:0)
运行命令时
javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX.java
不要写$PATH_TO_FX or %PATH%
,而是写路径本身
javac --module-path C:\javafx-sdk-11.0.2\lib --add-modules javafx.controls HelloFX.java
还要确保您的目录没有任何空格。它给我带来了问题,它可能适用于带空格的目录
答案 7 :(得分:-1)
如果您使用的是Netbeans,除非您遇到此错误,否则必须取消选中“保存时编译”。
https://github.com/openjfx/openjfx-docs/issues/91#issuecomment-537354974
如果要截图
https://github.com/openjfx/openjfx-docs/issues/120#issuecomment-692805305