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

R语言加载xlsx包失败,修复rJava后问题仍存求助

解决R语言xlsx包加载失败(rJava依赖问题)

错误信息

加载xlsx包时触发如下错误:

Error: package or namespace load failed for ‘xlsx’:
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/gallo/asn/.conda/envs/scRNAseq/lib/R/library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Traceback:

1. library(xlsx)
2. tryCatch({
 .     attr(package, "LibPath") <- which.lib.loc
 .     ns <- loadNamespace(package, lib.loc)
 .     env <- attachNamespace(ns, pos = pos, deps, exclude, include.only)
 . }, error = function(e) {
 .     P <- if (!is.null(cc <- conditionCall(e))) 
 .         paste(" in", deparse(cc)[1L])
 .     else ""
 .     msg <- gettextf("package or namespace load failed for %s%s:\n %s", 
 .         sQuote(package), P, conditionMessage(e))
 .     if (logical.return && !quietly) 
 .         message(paste("Error:", msg), domain = NA)
 .     else stop(msg, call. = FALSE, domain = NA)
 . })
3. tryCatchList(expr, classes, parentenv, handlers)
4. tryCatchOne(expr, names, parentenv, handlers[[1L]])
5. value[[3L]](cond)
6. stop(msg, call. = FALSE, domain = NA)

已尝试操作

检查Java版本后,尝试重新安装rJava并设置路径,但问题未解决:

system("java -version")

Sys.setenv(JAVA_HOME = "/home/gallo/asn/.conda/envs/scRNAseq/lib/R/library/rJava/libs/rJava.so")

install.packages("rJava", type = "source")

Sys.setenv(LD_LIBRARY_PATH "/home/gallo/asn/.conda/envs/scRNAseq/lib/R/library/rJava/libs/rJava.so")

library(xlsx)

问题根源与解决步骤

核心错误是路径配置错误:JAVA_HOME需指向Java安装根目录,而非rJava的共享库文件;LD_LIBRARY_PATH要指向libjvm.so所在目录,而非rJava.so。

步骤1:定位Java安装路径与libjvm.so位置

  1. 终端执行以下命令获取Java安装根目录:
readlink -f $(which java) | sed "s:/bin/java::"

输出示例:/usr/lib/jvm/java-11-openjdk-amd64,此即为JAVA_HOME。

  1. 查找libjvm.so所在目录:
find /usr/lib/jvm/ -name libjvm.so

输出示例:/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so,取目录部分/usr/lib/jvm/java-11-openjdk-amd64/lib/server/。

步骤2:在R中正确配置环境变量

激活scRNAseq conda环境后启动R,执行:

# 替换为你的Java安装根目录
Sys.setenv(JAVA_HOME = "/usr/lib/jvm/java-11-openjdk-amd64")
# 替换为你的libjvm.so所在目录
Sys.setenv(LD_LIBRARY_PATH = "/usr/lib/jvm/java-11-openjdk-amd64/lib/server/")

步骤3:重装rJava并加载xlsx

# 卸载现有rJava
remove.packages("rJava")
# 从源码安装,指定JDK路径确保编译正常
install.packages("rJava", type = "source", configure.args = "--with-jdk=/usr/lib/jvm/java-11-openjdk-amd64")
# 加载xlsx包
library(xlsx)

可选:永久配置环境变量

避免每次启动R重复设置,可在conda环境中添加自动生效的变量:

  1. 创建激活脚本目录:
mkdir -p /home/gallo/asn/.conda/envs/scRNAseq/etc/conda/activate.d
  1. 写入环境变量配置:
echo 'export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"' >> /home/gallo/asn/.conda/envs/scRNAseq/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk-amd64/lib/server/:$LD_LIBRARY_PATH"' >> /home/gallo/asn/.conda/envs/scRNAseq/etc/conda/activate.d/env_vars.sh

下次激活scRNAseq环境时,变量会自动加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:29:55