找不到模块:javafx.controls

时间:2019-01-05 19:41:28

标签: java

我已经下载了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

8 个答案:

答案 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步解决。

  1. 在命令行中使用%PATH_TO_FX%代替 $ PATH_TO_FX

  2. 重新创建变量(系统变量和用户变量) PATH_TO_FX ,将其值括在引号中。由于目录“ C:\ Program Files \ Java \ javafx-sdk-11.0.1 \” 包含空格,因此会导致错误“无效标志”。

  3. 重新启动计算机以更新变量。

答案 3 :(得分:0)

由于JavaFX未包含在“默认” JDK中,因此我发现针对此类问题的最简单解决方案是使用Bellsoftware的LibericaJDK(11+),该软件再次包含JavaFX,从而使开发和运行JavaFX更加容易应用程序。

https://bell-sw.com/pages/java-11.0.4/

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