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

JavaFX项目重构包结构后module-info.java出现包未找到错误

问题解决:JavaFX模块描述符错误(Package com.example.trademarket not found)

问题根源

你当前的module-info.java中声明了opens com.example.trademarket to javafx.fxml;,但整理包结构后,com.example.trademarket这个根包下已经没有任何类文件了。Java模块系统要求,所有在module-info里用opens或exports声明的包,必须实际存在于模块中(即包下有类/资源文件),否则就会抛出InvalidModuleDescriptorException。

解决方案

  1. 删除无效的包声明:直接去掉opens com.example.trademarket to javafx.fxml;这一行,因为该根包已不存在。
  2. 按需配置子包的opens/exports:根据你的目标包结构(包含application、controller、classes子包),取消对应子包的配置注释,并确保配置符合实际需求:
    • controller包:FXML控制器类需要被反射访问,必须opens给javafx.fxml
    • application包:如果有主应用类或FXML相关类,同样需要opens给javafx.fxml
    • classes包:如果是实体类/工具类,若需要被模块外部访问则用exports,若需要FXML反射则用opens

修正后的module-info.java示例

module com.example.trademarket {
    requires javafx.controls;
    requires javafx.fxml;

    requires org.controlsfx.controls;
    requires org.kordamp.bootstrapfx.core;
    requires java.sql;
    requires org.apache.commons.codec;

    // 根据实际需求取消注释并调整
    opens com.example.trademarket.application to javafx.fxml;
    opens com.example.trademarket.controller to javafx.fxml;
    // 如果classes包需要被外部访问或反射,添加对应配置
    // opens com.example.trademarket.classes to javafx.fxml;
    // exports com.example.trademarket.classes;
}

额外检查

确认每个opens/exports的包下确实存在类文件,避免再次出现“包不存在”的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:35:09