Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';将所有JavaFX Dep放在类路径中,而不考虑Java模块,这还不够吗? 我一直在尝试编写hello javax应用程序,并面临着必要的考虑java模块启动应用程序的问题。_Java_Maven_Javafx_Java Platform Module System - Fatal编程技术网

为什么不是';将所有JavaFX Dep放在类路径中,而不考虑Java模块,这还不够吗? 我一直在尝试编写hello javax应用程序,并面临着必要的考虑java模块启动应用程序的问题。

为什么不是';将所有JavaFX Dep放在类路径中,而不考虑Java模块,这还不够吗? 我一直在尝试编写hello javax应用程序,并面临着必要的考虑java模块启动应用程序的问题。,java,maven,javafx,java-platform-module-system,Java,Maven,Javafx,Java Platform Module System,F.e.javafx maven插件的运行目标生成这样的启动命令: [DEBUG] Executing command line: [C:\java\zulu14.29.23-ca-jdk14.0.2-win_x64\bin\java.exe, --module-path, C:\.m2\repository\org\openjfx\javafx-base\14\javafx-base-14-win.jar; C:\.m2\repository\org\openjfx\javafx-base\

F.e.javafx maven插件运行目标生成这样的启动命令:

[DEBUG] Executing command line: [C:\java\zulu14.29.23-ca-jdk14.0.2-win_x64\bin\java.exe, 
--module-path, C:\.m2\repository\org\openjfx\javafx-base\14\javafx-base-14-win.jar;
C:\.m2\repository\org\openjfx\javafx-base\14\javafx-base-14.jar;
C:\.m2\repository\org\openjfx\javafx-controls\14\javafx-controls-14-win.jar;
C:\.m2\repository\org\openjfx\javafx-controls\14\javafx-controls-14.jar;
C:\.m2\repository\org\openjfx\javafx-graphics\14\javafx-graphics-14-win.jar;
C:\.m2\repository\org\openjfx\javafx-graphics\14\javafx-graphics-14.jar, 
--add-modules, javafx.base,javafx.controls,javafx.graphics, 
-classpath, D:\project\target\classes, org.pkg.pkg.App]

但是我的项目结构没有提到Java模块功能——我没有模块信息.Java文件。
为什么我不能将以上所有罐子都放在应用程序类路径中并感到快乐?
F.e.:

如果我是对的,并且正确理解规范

  • 类路径中定义的模块JAR被视为未命名模块
  • 未命名模块导出其所有包,即其中的所有内容都可见
但我犯了个错误

Error: JavaFX runtime components are missing, and are required to run this application
有人能解释一下我错在哪里,关于Java模块是如何工作的吗

提前谢谢

警告:尽管下面显示了您想要的是可能的,但将JavaFX模块放在类路径上是不可能的。这意味着您应该将JavaFX放在模块路径上,即使您自己的代码是非模块的


您可以将JavaFX放在类路径上,完全忽略模块1。但是,需要注意的是,您的主类不能再分配给
javafx.application.application
2。解决方法是创建一个单独的主类,只需启动JavaFX应用程序。例如:

导入javafx.application.application;
公共类启动器{
公共静态void main(字符串[]args){
//将应用程序类替换为应用程序类的位置
Application.launch(YourApp.class,args);
}
}

一,。你不能完全忽略模块。类路径上的所有代码都以未命名模块结束,运行时映像中的所有模块(即JDK/JRE)仍然作为命名模块运行

二,。这是由于实现细节造成的。Java包含的代码允许您在不使用main方法的情况下启动JavaFX应用程序,只要main类可分配给
Application
。但是,当它检测到主类可分配给
应用程序时,它会检查引导
模块层中的
javafx.graphics
——这意味着它必须位于模块路径上,如果不在模块路径上,则它会假定javafx丢失。

警告:尽管下面显示了您想要的是可能的,将JavaFX模块放置在类路径上是不正确的。这意味着您应该将JavaFX放在模块路径上,即使您自己的代码是非模块的


您可以将JavaFX放在类路径上,完全忽略模块1。但是,需要注意的是,您的主类不能再分配给
javafx.application.application
2。解决方法是创建一个单独的主类,只需启动JavaFX应用程序。例如:

导入javafx.application.application;
公共类启动器{
公共静态void main(字符串[]args){
//将应用程序类替换为应用程序类的位置
Application.launch(YourApp.class,args);
}
}

一,。你不能完全忽略模块。类路径上的所有代码都以未命名模块结束,运行时映像中的所有模块(即JDK/JRE)仍然作为命名模块运行

二,。这是由于实现细节造成的。Java包含的代码允许您在不使用main方法的情况下启动JavaFX应用程序,只要main类可分配给
Application
。但是,当它检测到主类可分配给
应用程序时,它会检查引导
ModuleLayer
中的
javafx.graphics
——这意味着它必须位于模块路径上,如果不在那里,则会假定javafx丢失

Error: JavaFX runtime components are missing, and are required to run this application