You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven构建失败:JavaFX及POI模块未找到问题咨询

问题概述

在Eclipse IDE中使用JavaSE 18和JavaFX 19搭建Maven项目,编写JavaFX测试程序时,执行Maven构建目标 clean javafx:run 出现构建失败,编译阶段提示找不到多个模块。以「Run As JavaApplication」方式可正常运行,但无法导出可执行文件。

错误信息

[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------< org.openjfx:HauserProgram >----------------------
[INFO] Building HauserProgram 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ HauserProgram ---
[INFO] Deleting D:\eclipse-workspace\javafxmav\target
[INFO] 
[INFO] >>> javafx-maven-plugin:0.0.8:run (default-cli) > process-classes @ HauserProgram >>>
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HauserProgram ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ HauserProgram ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to D:\eclipse-workspace\javafxmav\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[6,24] module not found: javafx.base
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[7,24] module not found: javafx.controls
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[8,35] module not found: javafx.fxml
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[9,35] module not found: javafx.graphics
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[11,32] module not found: org.apache.poi.poi
[INFO] 5 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.683 s
[INFO] Finished at: 2022-11-01T12:45:40+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project HauserProgram: Compilation failure: Compilation failure: 
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[6,24] module not found: javafx.base
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[7,24] module not found: javafx.controls
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[8,35] module not found: javafx.fxml
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[9,35] module not found: javafx.graphics
[ERROR] /D:/eclipse-workspace/javafxmav/src/main/java/module-info.java:[11,32] module not found: org.apache.poi.poi
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

相关代码

module-info.java

module HauserProgram {

    exports de.hauserwein;

    requires java.sql;
    requires javafx.base;
    requires javafx.controls;
    requires transitive javafx.fxml;
    requires transitive javafx.graphics;
    requires java.desktop;
    requires org.apache.poi.poi;

    opens de.hauserwein to javafx.fxml, javafx.base, javafx.controls, javafx.graphics;
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.openjfx</groupId>
  <artifactId>HauserProgram</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <maven.compiler.source>18</maven.compiler.source>
 <maven.compiler.target>18</maven.compiler.target>
</properties>
  
  <dependencies>
  
  <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.30</version>
  </dependency>
  
  <dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-fxml</artifactId>
    <version>18</version>
  </dependency>
  
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-to-slf4j</artifactId>
    <version>2.19.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>


  </dependencies>
  
  
    
  <build>
    <plugins>
    <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.8</version>
        <configuration>
<mainClass>de.hauserwein/Main.java</mainClass>

</configuration>
    </plugin>
    </plugins>
  </build>

</project>

解决方案

  • 补全JavaFX依赖:当前pom.xml仅引入javafx-fxml,编译阶段需要明确添加javafx.base、javafx.controls、javafx.graphics依赖,且版本需统一(建议全用18或全用19)。在<dependencies>中添加:

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>18</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>18</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>18</version>
    </dependency>
    
  • 修正Apache POI模块声明:Apache POI 5.x的模块名称为org.apache.poi,而非org.apache.poi.poi。修改module-info.java对应行:

    requires org.apache.poi;
    
  • 更新Maven编译器插件:旧版本maven-compiler-plugin:3.1对Java 18模块化支持不足,替换为新版本并添加到<build><plugins>中:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
            <source>18</source>
            <target>18</target>
        </configuration>
    </plugin>
    
  • 修正主类路径:JavaFX插件的<mainClass>需使用全类名,无需.java后缀,修改为:

    <mainClass>de.hauserwein.Main</mainClass>
    
  • 导出可执行文件:若需生成包含运行时的可执行镜像,在JavaFX插件中添加jlink配置:

    <configuration>
        <mainClass>de.hauserwein.Main</mainClass>
        <jlinkImageName>HauserProgram</jlinkImageName>
        <jlinkZipName>HauserProgram-dist</jlinkZipName>
    </configuration>
    

    执行mvn clean javafx:jlink即可生成可执行镜像包,解压后运行对应启动脚本即可。

内容的提问来源于stack exchange,提问作者Christian Stempfle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:25:53