IntelliJ JavaFX Maven 运行:无法识别的选项:--module-path

Posted

技术标签:

【中文标题】IntelliJ JavaFX Maven 运行:无法识别的选项:--module-path【英文标题】:IntelliJ JavaFX Maven Run: Unrecognized option: --module-path 【发布时间】:2020-11-05 15:33:04 【问题描述】:

当您使用 Maven 和 JavaFX 原型创建新的 IntelliJ 项目时,我正在尝试运行(使用 Maven 的 javafx:compile 然后 javafx:ru​​n)默认的 JavaFX 应用程序。

这是错误的前几行,其余的没有任何有用的信息:

[INFO] 
[INFO] --- javafx-maven-plugin:0.0.3:run (default-cli) @ ISAMG ---
Unrecognized option: --module-path
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    ...

一些Java配置细节:

此项目的项目 JDK 是通过 IntelliJ (OpenJDK) 下载的。 项目语言级别为 14。 模块语言级别为 14。 目标字节码设置为 14。 Maven 的 Runner JRE 设置为同一个项目 JDK(不通过 JAVA_HOME 环境变量)。 IntelliJ 终端中给出的 JavaC 版本是javac 14.0.1 IntelliJ 终端中给出的Java 版本是java version "1.8.0_261" Maven 本身并未独立于 IntelliJ 安装在我的计算机上。 项目是一个模块项目(带有module-info.java) 没有插件。

这些是我尝试/检查过的步骤:

    使用 javafx-maven-plugin 版本 0.0.1 到 0.0.4 使用了一个单独下载的 JDK 副本(从 Oracle 的网站),一切都指向这一点。 将语言级别和目标字节码设置为 11。 已试用 JavaFX 版本 12.0.2 和 14 尝试运行 Maven 的 compile:compile,然后是 resources:resources,然后是 javafx:run。也事先尝试过clean:clean。 尝试使用 JAVA_HOME(用于用户和系统)并指向单独下载的 JDK。 通过添加指向 JDK 的 <executable>path/and/stuff</executable> 显式覆盖 IntelliJ 的 Maven Runner 的指向目录 Git 已更新到当前版本。 删除了 .idea 文件夹中的所有内容。 禁用了我的防病毒软件 删除并重新制作了.iml 文件,以防与pom.xml 文件发生冲突。 通过将 Maven 的 org.apache.maven.plugins 配置/发布版本更改为 14 来覆盖目标字节码版本。 重新安装 Java。 在上述每个步骤后重新启动系统。

注意事项:

使用应用程序配置运行程序确实会正确显示场景。 运行 javafx:compile 不会产生错误或警告。 javafx:jlink 也没有(尽管如果使用 javafx-maven-plugin 版本 0.0.4 会失败并出现 not-found 错误)。 在项目创建过程中,Maven 没有settings.xml,所以我根据网上找到的默认值创建了一个,并将其放在错误指向的文件夹中。但是,有一个 \repository 文件夹。 我遇到了几个小时的问题,修改了一些东西,然后它变成了Java.io.IOException: CreateProcess error=5, Access is denied 错误。进一步的变化带来了回到原来的错误。我所做的步骤包括在上面。提供的解决方案可能会导致上述错误再次出现。

【问题讨论】:

您的 java -version 指向 Java 8,但 --module-path 选项直到 Java 9 才添加。您需要确保您使用的是 Java 9+(实际上是 Java 11+,因为您在编译时 运行时重新使用 JavaFX 11+)。 This answer 可以帮到你。 【参考方案1】:

感谢Slaw,我找到了问题所在。我发布解决方案以防其他人在谷歌搜索问题时偶然发现这篇文章。

虽然我的所有东西都已设置好,并且我的 JAVA_HOME 设置为在我的系统上使用 JDK 14,但 java 版本仍然指向 Java 8 (1.8.0_261)。我的系统 PATH 变量之一是 C:\ProgramData\Oracle\Java\javapath,并且位于比指向 C:\Program Files\Java\jdk-14.0.2\bin 的系统 PATH 的上方(优先级更高)。我只是将以前的 System PATH 变量一直移到列表的底部,程序能够运行而没有任何警告或错误。

Slaw 的完整答案here 中的更多详细信息。

【讨论】:

以上是关于IntelliJ JavaFX Maven 运行:无法识别的选项:--module-path的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ IDEA 中创建 JavaFX Maven 项目?

JavaFX 不存在使用 Java 9 和 Intellij Idea

Javafx 项目不能用 maven 编译

IntelliJ + Gradle + JavaFX 构建,但未运行

使用 Gradle 在 IntelliJ 中运行 JavaFX 项目

试图在intellij jre11上运行javafx程序[重复]