Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Maven IntelliJ和Visual Studio代码中的JavaFX11开发_Maven_Visual Studio Code_Java 11_Javafx 11 - Fatal编程技术网

Maven IntelliJ和Visual Studio代码中的JavaFX11开发

Maven IntelliJ和Visual Studio代码中的JavaFX11开发,maven,visual-studio-code,java-11,javafx-11,Maven,Visual Studio Code,Java 11,Javafx 11,我正在建立一个基于Java/JavaFX11的Maven项目,该项目在IntelliJ和VisualStudio代码中都应该是可编辑的 我的JDK是来自的11.0.3(Windows x64) pom.xml依赖于 <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>

我正在建立一个基于Java/JavaFX11的Maven项目,该项目在IntelliJ和VisualStudio代码中都应该是可编辑的

我的JDK是来自的11.0.3(Windows x64)

pom.xml依赖于

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>11.0.2</version>
</dependency>
但VSC似乎仍然存在两个JavaFX版本的问题,或者没有使用正确的JDK。在“Java依赖项”视图中,我可以看到“JRE系统库”和“Maven”对JavaFX的引用。有没有办法将它们从JRE视图中排除

JavaFX引用如何在VSC中显示的屏幕截图:


根据上一次发布的屏幕截图,您似乎正在使用包含JavaFX的JDK 11

虽然大多数JDK发行版不包括JavaFX(OpenJDK、Oracle、OpenJDK等),但一些供应商将JavaFX与JDK捆绑在一起,比如Liberica

如果您查看Liberica的JDK发行说明:

Windows x86_64、Mac、Linux x86_64和Linux ARMv7发行版包含OpenJFX 11.0.2

虽然此选项简化了JavaFX的使用(无需将其添加到模块路径,因为它已经是模块路径的一部分),但如果您使用Maven或Gradle构建工具并包含JavaFX依赖项,或者如果您安装了其他JDK而没有它,则可能会造成混淆

因此,解决方法很简单:要么不使用JavaFX而使用JDK,并通过Maven/Gradle依赖项提供它,要么将JDK与JavaFX一起使用而不包含它们

我想后者是首选选项,以防您需要导出/共享您的项目,因为其他人可能没有相同的设置。此外,它还使JavaFX的新版本更加灵活


另外,请注意,您可以按照Custom JDK+JavaFX image一节中的说明,生成自己的绑定JavaFX的JDK。

您是说您的JDK包含JavaFX模块吗?我不认为是这样,JavaFX不包括在内。您下载的发行版正是哪个?@JoséPereda,据我所知,JavaFX不是JDK的一部分(Liberica的Pi版本除外,请参阅)。我在问题中添加了我的分发版(Windows x64)和VSC中依赖项的屏幕截图。事实上,AdoptOpenJDK不包括JavaFX(我在Mac和Windows上进行了检查),因此最后一个屏幕截图令人困惑(我得到了Maven依赖项和JavaFX,而JRE系统库没有JavaFX)。您能否在Windows资源管理器中验证您的
jdk-11.0.3+7/jmods
文件夹中没有JavaFX jmods?jmods中没有fx,因此您是正确的。我想我的机器上有太多JDK版本,这会混淆VSC。稍后将在另一台机器上尝试。如果从pom.xml中删除fx依赖项,我可以启动并运行应用程序。所以这让它更令人困惑:-)看起来你已经用JavaFX安装了JDK 11(你提到Liberica,他们也在Windows上集成了JavaFX,而不仅仅是在ARM上),VSC不知怎么在使用它?顺便说一句,这都与嵌入式设备上的相同问题有关:当你选择你将使用的JDK时,检查它是否包含JavaFX。Zulu OpenJDK build也可以随OpenJFX 8或11一起提供:
The package javafx.scene.chart is accessible from more than one module: <unnamed>, javafx.controls
 {
    "java.dependency.packagePresentation": "hierarchical",
    "java.home": "C:/Program Files/Java/jdk-11.0.3+7",
    "java.configuration.updateBuildConfiguration": "automatic"
 }