如何在IDE之外启动JavaFX11应用程序?
我下载了:如何在IDE之外启动JavaFX11应用程序?,java,javafx,javafx-11,netbeans-10,Java,Javafx,Javafx 11,Netbeans 10,我下载了: -OpenJDK 11.0.2 -JavaFXSDK 11.0.2 这两个文件都被提取到路径C:/ProgramFiles/Java/ 操作系统:Windows 10 IDE:NetBeans 10.0 路径: JAVA_HOME = C:/Program Files/Java/jdk-11.0.2 PATH_TO_FX = C:/Program Files/Java/javafx-sdk-11.0.2/lib 内部路径系统变量add%JAVA\u HOME%/bin 在Net
-OpenJDK 11.0.2
-JavaFXSDK 11.0.2
这两个文件都被提取到路径
C:/ProgramFiles/Java/
操作系统:Windows 10IDE:NetBeans 10.0 路径:
JAVA_HOME = C:/Program Files/Java/jdk-11.0.2
PATH_TO_FX = C:/Program Files/Java/javafx-sdk-11.0.2/lib
内部路径系统变量add%JAVA\u HOME%/bin
在NetBeans中,我创建了名为JFXDev的Java应用程序项目,其中包含一个com包。com包内有一个主类,其代码如下:
package com;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
但这没什么区别。我做错了什么,有什么建议吗 我尝试了来自的步骤,但得到了相同的错误:///p>“实际”答案 您提供的一些错误表明参数中的空格有问题(例如,
C:/Program Files/…
)。用引号将%PATH\u到\u FX%
括起来:%PATH\u到\u FX%”
。然后,正如您在中所说,正确的命令行是:
java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-jar
其余答案 从你提供的信息来看,很难(至少对我来说)说出问题的确切原因。相反,我将给出一些从命令行启动JavaFX应用程序的示例,包括模块化和非模块化 假设您有一个项目,其中一个类是名为
com.example.main
的主类。此类扩展了应用程序
,并显示一个简单的窗口。也就是说,当代码是模块化的时,模块看起来像:
module app {
requires javafx.controls;
exports com.example to javafx.graphics;
}
您的项目结构如下所示:
\---
+---出去
|+---人工制品
|| app-1.0.jar(模块化或非模块化)
| |
|\---班级
||模块-信息类(模块化时)
| |
|\---com
|\---示例
|主类
|
\---src
|module-info.java(模块化时)
|
\---com
\---范例
主类
然后,您的命令行将类似于以下命令之一(面向Windows):
非模块化
分解目录
java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-cp out\classes com.example.Main
Jar文件
java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-jar out\artifacts\app-1.0.jar
注意:需要清单中的Main Class
属性
模块化
分解目录
java-p”%PATH\u TO\u FX%;out\classes“-m app/com.example.Main
Jar文件
java-p”%PATH\u TO\u FX%;out\artifacts“-m app/com.example.Main
或者如果Jar是使用--main类创建/更新的
java-p”%PATH\u TO\u FX%;out\artifacts“-m app
注:
- 以上假设
是工作目录
-p
是--模块路径
-m
是--module
-cp
是--类路径
或--类路径
如果您使用“%PATH\u TO\u FX%”怎么办?错误消息表明参数中的空格有问题。@Slaw这两种方法都无效。是相同的错误还是新的错误?@Slaw-Same-error找不到主类。我用新的第5点更新了我的问题,在那里我尝试了完整路径,并收到了相同的回答。如果您有一个JAR文件,清单中有Main Class
条目,请尝试java-p“%path\u TO\u FX%”——添加模块javafx.controls-JAR
。(注意:-p
是--模块路径
的缩写)
module app {
requires javafx.controls;
exports com.example to javafx.graphics;
}