在修复robot.awt的requires问题后,我现在在运行应用程序时遇到了另一个问题。应用程序构建没有问题。堆栈跟踪:
Exception in Application constructor
Exception in thread "main" 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:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class reports.Main
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:890)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessException: class com.sun.javafx.application.LauncherImpl (in module javafx.graphics) cannot access class reports.Main (in module Reports) because module Reports does not export reports to module javafx.graphics
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:802)
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(Native Method)
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
Process finished with exit code 1
模块报告{
需要javafx.controls;
需要javafx.media
打开报告javafx.graphics;
}
文件module-info.java将您的应用程序定义为一个名为reports的模块,您的模块需要一些模块(javafx.controls和javafx.media)才能工作
注意:模块名称报告取自主类的包名称。
为什么使用模块?
模块是组织应用程序和库的一种新方法,它还支持强大的封装和实现/反射隐藏。
问题的根本原因包含在此行中:
Caused by: java.lang.IllegalAccessException: class com.sun.javafx.application.LauncherImpl (in module javafx.graphics) cannot access class reports.Main (in module Reports) because module Reports does not export reports to module javafx.graphics
Application.launch
使用反射创建应用程序类的实例。只有当类在打开或导出到应用程序的模块(
javafx.graphics
)的包中接收时,像Application
这样的外部类才允许通过反射访问您的类。
您需要在
报告
模块声明中添加以下行之一:
exports reports;
opens reports to javafx.graphics;
最后一行应该是首选的,因为它是限制性更强的一行。如果
报告
包中还包含例如main
类/方法,则应使用第一行。
我使用Intellij Idea作为我的IDE。因为我需要使用css文件,所以我安装了Intellij Ultimate。现在javaFx并不能同时处理这两个问题。 引发得异常: 初始化引导层java.lang.Module.FindException时出错:找不到模块javafx.controls VM设置与前面的IDE完全相同。令人惊讶的是,如果我在中只放一个jar,那么控制台中显示的丢失的j
和太多其他人一样,我也有同样的问题,编译器找不到JavaFX模块。首先,我正在使用Eclipse,并在Eclipse中添加了我的JavaFX位置作为(像这样),添加了我的项目依赖项(像这样),并确保设置了(像这样)。 之后,我在中的中添加了以下参数: 这将导致以下消息: 初始化引导层 java.lang.module.FindException 时出错:找不到模块 javafx.base 我确实有
标题中的错误是我模块信息中的错误。JAVA我是Java新手,所以我希望在你给出答案时我能理解你的答案。我发现这里的其他问题也提出了同样的问题,他们可能有答案,我只是不知道如何将其应用到我的情况中。 javafx。base读取包javafx。豆 模块化java项目(IntelliJ IDEA):模块的com。测试“读取包”javax。xml。绑定“来自两个”java。xml。绑定“和”java。xm
我已经按照本指南将JavaFX安装到Linux机器上。首先我安装了Java11 然后,我从命令安装了OpenJFX 然后在Eclipse中创建了一个库。 然后我将它包含到我的java项目中。我尝试运行以下代码: 我已经将运行配置更改为: 但是当我编译代码的时候。我得到以下错误: 问题: 哪里有人知道如何解决这个错误吗?我以前安装过JavaFX,但这一次,它对我不起作用。 编辑1:如果我将运行配置更
我有一个Java8应用程序,它使用JavaFX,主类扩展了JavaFX.application.application。目前,我将它作为一个fat jar交付,它在Oracle Java8上运行良好。 现在我希望它能够在OpenJDK11上运行。为了添加JavaFX,我已经将org.openjfx中的工件添加到类路径中,并将它们包含在fat JAR中。如果我从命令行启动我的jar,我会得到 脏的一
我想在现有的IntelliJ IDEA Java项目(Java版本1.8.0_20)中集成一个JavaFX GUI。 虽然我可以在我的IDE中从头创建一个JavaFX项目(启用了JavaFX插件),但我想不出如何创建模块。 我需要为一个新的Java模块定义一个新的模块SDK吗?还是JavaFX模块的类型必须是IntelliJ平台插件?我两样都试了,都没有成功。请帮帮忙。