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

Eclipse中jOpenDocument报错:无法派生模块描述符

解决jOpenDocument模块描述符报错问题

问题根源

你遇到的错误核心是:

  1. jOpenDocument的jar包中存在无名包(无package声明)的类(比如JDOMAbout$Info.class),而Java模块系统(JPMS)要求模块内不能包含无名包的类,因此无法自动推导模块描述符。
  2. 自动模块名称不稳定的提示,是因为该jar没有官方的module-info.java,模块名由文件名推导而来(你的情况是jopendocument),而你在module-info.java中写的是requires jOpenDocument,大小写不匹配也会加重问题。

解决方案(按推荐优先级排序)

方案1:切换为非模块化项目(最简便)

直接避开模块系统的限制:

  • 右键项目 → 属性 → Java Build Path → Libraries
  • 将jOpenDocument.jar从Modulepath移到Classpath
  • 删除项目根目录下的module-info.java文件
  • 重新运行程序即可

方案2:修正自动模块名并添加VM参数(保留模块化项目)

如果要继续使用模块化项目,先解决模块名匹配问题,再绕过无名包限制:

  1. 修改module-info.java中的requires语句,和自动模块名一致:
    requires jopendocument;
    
  2. 打开运行配置 → VM arguments,添加参数放宽模块化限制:
    --illegal-access=warn
    
    (注:该参数在Java 9+中临时允许非合规模块的访问,仅作为过渡方案)

方案3:手动为jar添加模块描述符(彻底解决,适合长期使用)

如果需要合规的模块化依赖,手动修改jar包:

  1. 解压jopendocument.jar到临时目录
  2. 将顶级目录下的无名包类(如JDOMAbout$Info.class)移动到一个新包中(比如org.jopendocument.legacy),并修改这些类的package声明
  3. 在解压目录下创建module-info.java,示例内容:
    module jopendocument {
        exports org.jopendocument.dom;
        exports org.jopendocument.util;
        // 根据你用到的包添加exports声明
        requires java.desktop;
        requires java.xml;
    }
    
  4. 重新打包jar:
    jar --create --file jopendocument-mod.jar -C 解压目录路径/ .
    
  5. 用新的jopendocument-mod.jar替换原jar,在module-info.java中声明requires jopendocument;即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:30:49