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>
在将 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
, thejavafx-maven-plugin
produces the following:[WARNING] Module name not found in <mainClass>. Module name will be assumed from module-info.java
. ThemainClass
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>