大佬们,我javafx为什么会报错啊

漫路在线 2020-08-15 08:27:39
我用jdk14和IDEA,想用javafx开发gui,但是只要我尝试增加组件或导入fxml,就会报Exception in Application start method错误
例如这是我的代码
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 hello extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
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);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}

具体错误内容
引用
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.scene.control.ControlHelper (in unnamed module @0x2ce7ffb5) cannot access class com.sun.javafx.scene.layout.RegionHelper (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.scene.layout to unnamed module @0x2ce7ffb5
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at javafx.scene.control.Control.<clinit>(Control.java:86)
at hello.start(hello.java:17)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Exception running application hello

我的javafx和jdk版本一致,但就是运行不了,有些程序别人可以运行放我这里就会报这个错误
...全文
20337 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brave--Li 2023-03-26
  • 打赏
  • 举报
回复

请问答主解决了吗

  • 打赏
  • 举报
回复

有需要找工作的同学吗?可以加我VX:BowmanWang

深圳南山区医疗行业公司直招

JAVA桌面应用 开发工程师
岗位职责:

  1. 负责PC桌面软件的某些功能模块的详细设计和编码实现;

任职要求:

  1. JAVA基础扎实,有桌面应用开发经验
  2. 需要有JavaFX的实际使用经验
  3. 能阅读英文技术文档(CET4级以上)
  4. 熟悉Gradle、GIT等工具;
  5. 本科及以上学历,一年及以上java软件项目开发经验
  6. 学习能力强,责任心强,有较强的沟通能力
头发乱了_257 2020-09-04
  • 打赏
  • 举报
回复 1
[face]jdk1.8完美解决
姜希成 2020-09-04
  • 打赏
  • 举报
回复
只能用main方法运行,而你的launch又没有指定启动类:hello.class
姜希成 2020-09-04
  • 打赏
  • 举报
回复
单独写一个Launcher类,里面写main方法:Application.launch(hello.class, args);
  • 打赏
  • 举报
回复 1
请用JDK1.8。完事。
鸡窝里的毛 2020-08-16
  • 打赏
  • 举报
回复 1
jfx最好用模块化编程,在classpath里加一个module-info.java,里边导入相关的模块,并且fxml对程序包开放。比如:


module sample{
exports sample.pages.app;
exports sample.pages.bean;
exports sample.pages.TimeZones;
exports sample.pages;
exports sample.pages.monitor;
exports beans;
exports sample.pages.color;
exports sample.pages.play;
exports sample.pages.network;
exports uiexdata;
exports sample;

opens sample to javafx.fxml;
opens sample.pages to javafx.fxml;
opens sample.pages.play to javafx.fxml;

requires java.xml;
requires javafx.base;
requires javafx.controls;
requires javafx.fxml;
requires javafx.graphics;
}
ASCII0000 2020-08-16
  • 打赏
  • 举报
回复 1
换jdk1.8,少用fxml能减少很多不明错误
菜鸟①个 2020-08-16
  • 打赏
  • 举报
回复
换jdk..
无语无 2020-08-16
  • 打赏
  • 举报
回复
问个问题,cfnet中文名字是什么?
大彭Sir 2020-08-16
  • 打赏
  • 举报
回复

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧