【发布时间】:2019-10-31 17:49:47
【问题描述】:
java 版本 1.8.0_221 日食版本 2019-06 (4.12.0) 我正在尝试制作一个基本的 JavaFX 程序。我已将 jfxrt 外部 jar 导入到模块构建路径下的库选项卡中。
我收到此错误“错误:无法找到或加载主类 firstFX.eighthTry 引起:java.lang.NoClassDefFoundError: javafx/application/Application"
我在网上找到的唯一建议告诉我摆脱任何外部 jar,但我需要 jfxswt 才能使用 JavaFX。我也尝试过使用 Project > Clean,但这也没有做任何事情。
我很茫然,有什么办法可以解决这个问题吗?代码如下
package firstFX;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class eighthTry extends Application{
public static void main(String[] args) {
// TODO Auto-generated method stub
launch(args);
}
@Override
public void start(Stage arg0){
// TODO Auto-generated method stub
arg0.setTitle("Hello World!");
final Button btn = new Button();
btn.setText("Click Me!");
final StackPane root = new StackPane();
root.getChildren().add(btn);
arg0.setScene(new Scene(root, 300, 250));
arg0.show();
}
}
编辑: 我已经完成了 Eclipse 的全新安装(现在是 2019-09),还通过 Help>Install new software 安装了 e(fx)clipse,然后从 http://download.eclipse.org/efxclipse/updates-released/3.3.0/site 安装了这两个东西。我关注了this tutorial。
对于我的代码,我在“属性”>“Java 构建路径”>“库”>“模块路径”下添加了 JavaFX SDK。然后我把它放在 Order and Export 选项卡的顶部。
不幸的是,这并没有改变任何东西。我仍然遇到与上面相同的错误。
另外,我弄错了我需要的外部 jar 的名称。我已经用 jfxrt.jar 替换了 jfxswt.jar。但是,这并没有解决错误。
【问题讨论】:
-
清理项目并在eclipse中刷新,试试看可能可行。
-
它实际上应该在没有
jfxswt.jar的情况下工作 - 缺少的类应该在 JDK8/JRE8 附带的jfxrt.jar中(在ext目录中) - 确保 JavaSE 的 JRE 系统库 1.8 包含在您的项目中(JavaFX 是 Java 8 的一部分,但不是 Java 更高版本的一部分) -
我这里没有 2019-06,但在 2019-03 和 2019-09 工作得很好 - 只需要更改项目以包含 JRE8(Java 构建路径 - 库 - JRE 系统库 - 执行环境: 8 {and java JDK8 configured} or Alternate JRE: 8)
-
在模块构建路径下听起来很可疑:java8 没有模块