javafx-maven-plugin 版本 >= 0.0.5 的警告:"Module name not found in <mainClass>. Module name will be assumed from module-info.java"

Warning with javafx-maven-plugin version >= 0.0.5: "Module name not found in <mainClass>. Module name will be assumed from module-info.java"

在将 JavaFX 项目更新到版本 17.0.1 时,任何版本号为 0.0.5 或更高的 javafx-maven-plugin 都会发出新的警告消息。

警告信息是:

Module name not found in <mainClass>. Module name will be assumed from module-info.java

重现步骤

在任何方便的目录中,执行以下命令创建一个新的 JavaFX 项目:

mvn archetype:generate \
        -DarchetypeGroupId=org.openjfx \
        -DarchetypeArtifactId=javafx-archetype-simple \
        -DarchetypeVersion=0.0.3 \
        -DgroupId=org.openjfx \
        -DartifactId=example \
        -Dversion=1.0.0 \
        -Djavafx-version=17.0.1

项目创建完成后,cd进入example目录并运行:

mvn clean javafx:run

在我的系统上,window 打开并显示文本:

Hello, JavaFX 17.0.1, running on Java 17.0.1.

符合预期。项目目录下的pom.xml文件使用的是0.0.3版本的插件。 pom.xml 的相关区域如下所示:

...
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.3</version>
                <configuration>
                    <mainClass>org.openjfx.App</mainClass>
                </configuration>
            </plugin>
...            

更改为更新版本的插件(当前版本为 0.0.8。)并重新运行 程序。在我的系统上,该程序仍按预期运行,但会产生警告消息。

使用更新版本的项目原型(例如 -DarchetypeVersion=0.0.6 \)会立即产生警告,因为它创建了一个使用更新插件的项目。

检查插件的来源

正在检查显示错误的 https://github.com/openjfx/javafx-maven-plugin reveals that a change was made to the file JavaFXBaseMojo.java. A new function was added in version 0.0.5 and later called createMainClassString 处的插件源。

一些系统信息

mvn -version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /usr/local/Cellar/maven/3.8.4/libexec
Java version: 17.0.1, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "12.1", arch: "x86_64", family: "Mac"

我没有发现项目或 POM 有任何问题。我需要做什么来消除警告?

我最近遇到了同样的问题here:

When executing the command mvn javafx:run, the javafx-maven-plugin produces the following: [WARNING] Module name not found in <mainClass>. Module name will be assumed from module-info.java. The mainClass configuration attribute is the "fully qualified name, with or without module name." While the warning can be safely ignored, adding the module name eliminates the warning:

-  <mainClass>org.jfree.chart3d.fx.demo.OrsonChartsFXDemo</mainClass>
+  <mainClass>org.jfree.fx.demos/org.jfree.chart3d.fx.demo.OrsonChartsFXDemo</main

使用您的示例,以下配置消除了警告:

<configuration>
   <mainClass>org.openjfx/org.openjfx.App</mainClass>
</configuration>