Zet*_*red 3 java installation sdk javafx
我是 Java 新手,目前正在阅读文本并学习。我已经在我的目录中安装了 JDK /opt(在 Kubuntu 上工作)。我还在/opt. 由于我使用了终端,每当我想编译或运行涉及 JavaFX 模块的内容时,我都会使用
javac --module-path $PATH_TO_FX --add-modules ALL-MODULE-PATH className.java
但是,当我尝试同样的事情时,jshell它不会起作用。那是,
jshell --module-path $PATH_TO_FX --add-modules ALL-MODULE-PATH
我想知道的是,有没有什么方法可以安装 JavaFX SDK,以便它与 Java SDK 目录合并,这样每当我想编译/运行需要任何模块的程序时,我就不必使用这些标志来自JavaFX?
如果没有,谁能告诉我为什么jshell上面的命令不能按我的预期工作?
对于你的问题的这一部分:
我想知道的是,有没有什么方法可以安装 JavaFX SDK,以便它与 Java SDK 目录合并,这样每当我想编译/运行需要任何模块的程序时,我就不必使用这些标志来自JavaFX?
您可以使用jlink,它会生成自定义运行时映像。为了将服务包含在生成的运行时映像中,请使用该--bind-services选项。由于我不太明白的原因,要包含jshell在其中,您必须显式添加jdk.jshell模块(简单地使用--add-modules ALL-MODULE-PATH是行不通的)。所以你需要类似的东西:
jlink --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml,jdk.jshell --bind-services --output JavaWithFX
Run Code Online (Sandbox Code Playgroud)
创建包含 JavaFX 模块的 JDK。您可能需要包含其他 JavaFX 模块(例如javafx.web,如果您正在使用WebView、javafx.media如果您正在使用MediaPlayer等),或者javafx.fxml如果您不使用 FXML,则省略。
现在你可以使用该 JDK 来编译和运行:
export JAVA_HOME=JavaWithFX
javac ClassName.java
java ClassName
Run Code Online (Sandbox Code Playgroud)
(或者可能export PATH=JavaWithFX/bin:$PATH代替export JAVA_HOME,具体取决于 Java 在您的系统上的工作方式)。
跑步
JavaWithFX/bin/jshell
Run Code Online (Sandbox Code Playgroud)
将为您提供一个包含 JavaFX 模块的 jshell:
% JavaWithFX/bin/jshell
| Welcome to JShell -- Version 20
| For an introduction type: /help intro
jshell> import javafx.beans.property.SimpleIntegerProperty
jshell> var x = new SimpleIntegerProperty(0)
x ==> IntegerProperty [value: 0]
jshell> x.addListener((obs, oldValue, newValue) -> System.out.printf("x changed from %d to %d%n", oldValue, newValue))
jshell> x.set(42)
x changed from 0 to 42
jshell>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |