Ubuntu系统下加载XLConnect包报错求助
解决Ubuntu下加载XLConnect时rJava共享对象加载失败的问题
嘿,这个问题我之前在Ubuntu上折腾rJava和XLConnect的时候也碰到过!本质就是rJava没找准系统Java的共享库路径导致的,给你几个亲测有效的解决步骤:
1. 先把系统Java环境捋明白
- 先看看系统装了哪些Java版本,执行这条命令:
update-alternatives --list java
正常会输出类似/usr/lib/jvm/java-11-openjdk-amd64/bin/java的完整路径,记下来这个路径前缀(比如/usr/lib/jvm/java-11-openjdk-amd64) - 检查
JAVA_HOME环境变量有没有正确设置,跑一下:echo $JAVA_HOME
如果啥都没输出,就手动设置一下(把上面的路径填进去):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
要是想永久生效,就把这行加到你的~/.bashrc或者~/.profile文件里,下次重启终端就不用再输了
2. 重新给rJava“绑定”正确的Java路径
有时候之前装的rJava可能和系统Java不匹配,得重新安装并指定路径:
- 先把旧的rJava卸掉:
R CMD REMOVE rJava - 设置rJava需要的库路径:
export JAVA_LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64:$JAVA_HOME/lib/server - 重新安装rJava,你可以选在终端里跑:
R CMD INSTALL rJava
或者打开R控制台执行(记得把路径换成你自己的):install.packages("rJava", configure.args="--with-jdk=/usr/lib/jvm/java-11-openjdk-amd64")
3. 让系统动态链接库找到Java的库文件
有时候系统的动态链接库路径里没包含Java的库,得手动加进去:
- 临时生效(当前终端会话有用):
export LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64:$JAVA_HOME/lib/server:$LD_LIBRARY_PATH - 永久生效的话,创建/编辑
/etc/ld.so.conf.d/java.conf文件(需要sudo权限),把下面两行加进去:
然后执行/usr/lib/jvm/java-11-openjdk-amd64/lib/amd64 /usr/lib/jvm/java-11-openjdk-amd64/lib/serversudo ldconfig更新缓存,这样系统就能找到Java的共享库了
4. 验证并加载XLConnect
先打开R控制台,试试单独加载rJava:library(rJava)
如果这一步没报错,再加载XLConnect:library(XLConnect)
另外提个小细节:如果你用的是RStudio,别直接点图标启动,先在终端里设置好JAVA_HOME和LD_LIBRARY_PATH,再从终端里输入rstudio启动,这样RStudio才能读到正确的环境变量~
内容的提问来源于stack exchange,提问作者blacng
相关产品推荐
相关产品推荐

