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

如何解决R中使用Tabulizer提取PDF表格时出现的Java错误

问题解决方案

这个报错由Java 9及以上版本引入的模块访问权限限制导致,tabulizer底层依赖的rJava调用逻辑没有适配高版本Java的模块系统,你可以正常提取PDF元数据是因为元数据提取逻辑未触发受限的ArrayList迭代器调用接口,与tabulizer包安装状态无关。

可行解决方法

  • 方案1:降级Java到8版本
    卸载当前设备的高版本Java,安装OpenJDK 8或Oracle JDK 8,安装完成后在R中配置对应Java路径:
    # 替换为你本地JDK 8的实际安装路径
    Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_301")
    
    重启R会话后重新运行表格提取代码即可。
  • 方案2:给高版本Java添加模块开放启动参数
    如果不想降级Java,可在首次加载rJava前添加JVM启动参数放开访问限制,操作代码如下:
    # 必须在加载rJava、tabulizer前运行该配置
    options(java.parameters = "--add-opens java.base/java.util=ALL-UNNAMED")
    library(rJava)
    library(tabulizer)
    
    # 运行你的表格提取逻辑
    table <- extract_tables('https://fm.dk/media/17137/oekonomisk-redegoerelse-august-2019_weba.pdf', pages = 20)
    
    注意:如果已经加载过rJava,必须先重启R会话再运行上述代码,否则配置不会生效
  • 方案3:更换无兼容问题的依赖包
    无需调整Java配置,直接使用tabulizer的官方迭代版本tabulapdf,该包已经适配高版本Java的模块系统,安装后直接调用同名extract_tables函数即可完成提取。

内容的提问来源于stack exchange,提问作者Bjørn Hørsted Bremholm Hansen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:57:02