我想在崇高文本本身中运行包含JavaFX片段的java代码。
我使用的是JDK 13,因此JavaFX并不与JDK本身捆绑在一起。我下载了JavaFX文件并将它们存储在E:\javafx-sdk-15.0.1中,我还创建了一个系统环境变量E:\javafx-sdk-15.0.1来存储"E:\javafx-sdk-15.0.1\lib",即JavaFX模块所在的目录。
我试着在Sublime 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的实际值尝试相同的构建对于正常编译是有效的,但是运行版本仍然不能工作。我得到了以下错误:
错误:无法找到或加载由: D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX : D:\Codes\JAVA\HelloWorld_JavaFX.HelloWorld_JavaFX引起的主类java.lang.ClassNotFoundException
这是我试图运行的代码(摘自),
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。
发布于 2020-11-17 12:51:54
我所认为的“崇高文本”的问题仅仅是Java问题,如果我考虑过这个问题的话,Google搜索很少能很快解决这个问题。
因此,多亏了这个Stackoverflow线程的一些启示,并且主要是通过尝试,我能够成功地在崇高文本中构建,而不需要添加任何插件或对崇高文本进行任何修改。
这就是我现在构建文件的样子。
{
"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%。
发布于 2020-11-06 20:48:58
我建议使用像Gradle这样的构建工具,并在build.gradle文件中使用build.gradle插件。让SublimeText运行gradle构建。还有高级文本的Gradle插件。您也可以使用Maven,尽管我发现它要麻烦得多。
https://stackoverflow.com/questions/64695494
复制相似问题