javafx-maven-plugin 版本 >= 0.0.5 时发出警告:“在 <mainClass> 中找不到模块名称。模块名称将从 module-info.java 中假定”

cla*_*taq 5 javafx maven-plugin maven

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

警告消息是:

Module name not found in <mainClass>. Module name will be assumed from module-info.java
Run Code Online (Sandbox Code Playgroud)

重现步骤

在任何方便的目录中,执行以下命令来创建新的 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
Run Code Online (Sandbox Code Playgroud)

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

mvn clean javafx:run
Run Code Online (Sandbox Code Playgroud)

在我的系统上,会打开一个窗口并显示文本:

Hello, JavaFX 17.0.1, running on Java 17.0.1.
Run Code Online (Sandbox Code Playgroud)

这正如预期的那样。项目目录中的文件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>
...            
Run Code Online (Sandbox Code Playgroud)

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

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

检查插件的来源

在https://github.com/openjfx/javafx-maven-plugin检查插件的源代码,发现该文件已发生更改JavaFXBaseMojo.java。0.0.5 版本中添加了一个新函数,后来调用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"
Run Code Online (Sandbox Code Playgroud)

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

tra*_*god 7

我最近在这里遇到了同样的问题:

执行命令 时mvn javafx:run,会javafx-maven-plugin产生以下结果:[WARNING] Module name not found in <mainClass>. Module name will be assumed from module-info.java。配置mainClass属性是“完全限定名称,带或不带模块名称”。虽然可以安全地忽略警告,但添加模块名称可以消除警告:

-  <mainClass>org.jfree.chart3d.fx.demo.OrsonChartsFXDemo</mainClass>
+  <mainClass>org.jfree.fx.demos/org.jfree.chart3d.fx.demo.OrsonChartsFXDemo</main
Run Code Online (Sandbox Code Playgroud)

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

<configuration>
   <mainClass>org.openjfx/org.openjfx.App</mainClass>
</configuration>
Run Code Online (Sandbox Code Playgroud)