在 Sublime-Text 中添加构建系统,编译和 运行 JavaFX 代码
Adding build system in Sublime-Text, to Compile and Run JavaFX codes
我想 运行 java 包含 JavaFX 片段的代码,在 sublime-text 本身中。
我使用的是 JDK 13,因此 JavaFX 本身并未与 JDK 捆绑在一起。我下载了JavaFX文件并存储在E:\javafx-sdk-15.0.1
,我还创建了一个系统环境变量PATH_TO_JAVAFX来存储"E:\javafx-sdk-15.0.1\lib"
,JavaFX模块所在的目录在场。
我试图在 Sublime-Text 3 中添加以下构建,但它不起作用。
{
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\"",
"file_regex": "^(..[^:]):([0-9]+):?([0-9]+)?:? (.)$",
"working_dir": "${file_path}",
"selector": "source.java",
"variants":
[
{
"name": "Run",
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\" && java --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_path}/${file_base_name}\""
}
]
}
运行 cmd 本身的相同命令,实际值为 file
、file_path
和 file_base_name
,运行顺利。检查时,我发现 %PATH_TO_JavaFX% 没有按照我的预期进行,它没有扩展到我设置的实际路径。
用PATH_TO_JAVAFX
的实际值尝试相同的构建,正常编译就可以了,但是运行的版本还是不行。我收到以下错误:
Error: Could not find or load main class
D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX Caused by:
java.lang.ClassNotFoundException:
D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX
这是我正在尝试的代码 运行(taken from),
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld_JavaFX 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();
}
}
具体问题出在哪里,如何解决?另外有没有办法,我可以使用PATH_TO_JAVAFX
,而不是写完整的路径?
注意:我正在使用 Windows。
我建议使用 Gradle 之类的构建工具,并在 build.gradle 文件中使用 javafx Gradle 插件。拥有 SublimeText 运行 gradle 构建。 Sublime Text 也有 Gradle 插件。你也可以使用 Maven,虽然我觉得它更麻烦。
我认为是 Sublime-Text 的问题,结果证明只是 Java 问题,如果我考虑过这个问题,只需几次 Google 搜索就可以很快解决。
因此,多亏了这个 Whosebug thread 的一些启发,并且主要是点击和试用,我能够仅在 Sublime Text 中成功构建,而无需添加任何插件或修改 Sublime Text。
这是我的构建文件现在的样子
{
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\" && java -cp \"${file_path}\" --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_base_name}\"",
"file_regex": "^(..[^:]):([0-9]+):?([0-9]+)?:? (.)$",
"working_dir": "${file_path}",
"selector": "source.java",
"variants":
[
{
"name": "Compile",
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\""
},
{
"name": "Run",
"shell_cmd": "java -cp \"${file_path}\" --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_base_name}\""
}
]
}
仍然找不到让环境变量工作的简单方法,所以必须添加完整的路径来代替 %PATH_TO_JAVAFX%
。
我想 运行 java 包含 JavaFX 片段的代码,在 sublime-text 本身中。
我使用的是 JDK 13,因此 JavaFX 本身并未与 JDK 捆绑在一起。我下载了JavaFX文件并存储在E:\javafx-sdk-15.0.1
,我还创建了一个系统环境变量PATH_TO_JAVAFX来存储"E:\javafx-sdk-15.0.1\lib"
,JavaFX模块所在的目录在场。
我试图在 Sublime-Text 3 中添加以下构建,但它不起作用。
{
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\"",
"file_regex": "^(..[^:]):([0-9]+):?([0-9]+)?:? (.)$",
"working_dir": "${file_path}",
"selector": "source.java",
"variants":
[
{
"name": "Run",
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\" && java --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_path}/${file_base_name}\""
}
]
}
运行 cmd 本身的相同命令,实际值为 file
、file_path
和 file_base_name
,运行顺利。检查时,我发现 %PATH_TO_JavaFX% 没有按照我的预期进行,它没有扩展到我设置的实际路径。
用PATH_TO_JAVAFX
的实际值尝试相同的构建,正常编译就可以了,但是运行的版本还是不行。我收到以下错误:
Error: Could not find or load main class D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX Caused by: java.lang.ClassNotFoundException: D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX
这是我正在尝试的代码 运行(taken from),
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld_JavaFX 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();
}
}
具体问题出在哪里,如何解决?另外有没有办法,我可以使用PATH_TO_JAVAFX
,而不是写完整的路径?
注意:我正在使用 Windows。
我建议使用 Gradle 之类的构建工具,并在 build.gradle 文件中使用 javafx Gradle 插件。拥有 SublimeText 运行 gradle 构建。 Sublime Text 也有 Gradle 插件。你也可以使用 Maven,虽然我觉得它更麻烦。
我认为是 Sublime-Text 的问题,结果证明只是 Java 问题,如果我考虑过这个问题,只需几次 Google 搜索就可以很快解决。
因此,多亏了这个 Whosebug thread 的一些启发,并且主要是点击和试用,我能够仅在 Sublime Text 中成功构建,而无需添加任何插件或修改 Sublime Text。
这是我的构建文件现在的样子
{
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\" && java -cp \"${file_path}\" --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_base_name}\"",
"file_regex": "^(..[^:]):([0-9]+):?([0-9]+)?:? (.)$",
"working_dir": "${file_path}",
"selector": "source.java",
"variants":
[
{
"name": "Compile",
"shell_cmd": "javac --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file}\""
},
{
"name": "Run",
"shell_cmd": "java -cp \"${file_path}\" --module-path %PATH_TO_JAVAFX% --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \"${file_base_name}\""
}
]
}
仍然找不到让环境变量工作的简单方法,所以必须添加完整的路径来代替 %PATH_TO_JAVAFX%
。