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

VSCode的Jupyter Notebook运行tabulizer的extract_tables报错问题

问题原因

这个报错是Java 9及以上版本引入的模块化系统(JPMS)权限限制导致的:rJava依赖的RJavaTools类默认没有权限访问java.util包下的内部类成员。代码在R控制台能正常运行、在VSCode Jupyter Notebook中报错,是因为两个环境的R启动时加载rJava的默认参数不一致,VSCode的IRkernel默认没有配置对应的Java访问权限参数。

解决方案

方案1:提前配置Java权限参数(优先尝试)

在你的代码最开头添加Java参数配置,再加载相关包即可,完整可运行代码如下:

# 配置Java模块访问权限,必须在加载rJava/tabulizer之前运行
options(java.parameters = c("--add-opens", "java.base/java.util=ALL-UNNAMED"))

# 加载依赖包
library(tabulizer)

# 原有业务代码
f <- system.file("examples", "data.pdf", package = "tabulizer")
f1 <- extract_tables(f, output = "data.frame")
f1[[1]]

方案2:统一两个环境的R配置

如果方案1无效,说明你的VSCode R内核和系统R控制台的环境配置不一致,按以下步骤排查:

  • 分别在VSCode Jupyter和R控制台运行Sys.getenv("JAVA_HOME"),对比返回结果,如果不一致,在用户目录下的.Renviron文件中添加全局JAVA_HOME配置,确保两个环境调用同一个Java环境。
  • 卸载重装rJava和tabulizer包,避免包编译版本和Java版本不匹配:
    remove.packages(c("rJava", "tabulizer"))
    # 重启R后执行安装
    install.packages("rJava")
    install.packages("tabulizer")
    

方案3:降级Java版本

tabulizer对Java 8的兼容性最佳,Java 8没有模块化权限限制,切换到Java 8版本可直接解决该类兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:07