因此,我需要在Rapache程序中访问MSSQL服务器,当我试图在Rapache代码中加载RJDBC作为库时,我得到了服务器错误。在日志中,它看起来像这样:
referer: http://10.21.8.145/
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: package/namespace load failed for 'rJava'
Traceback:
5: stop(gettextf("package/namespace load failed for %s", sQuote(package)),
call. = FALSE, domain = NA)
4: library(rJava)
3: eval.with.vis(expr, envir, enclos)
2: eval.with.vis(ei, envir)
1: source("/var/www/brew/optimization.R")
[Fri Jun 15 13:57:29 2012] [error] [client 10.21.2.79] File does not exist: /var/www/favicon.ico此外,我还检查了该目录中是否存在rJava.so。是不是和libjvm.so有关?
问题是,当我在R中运行这个库(RJDBC)时,它会这样说:
Loading required package: DBI
Loading required package: rJava
Warning message:
replacing previous import 'show' when loading 'rJava'然后我所有的RJDBC代码都能正常工作。那么,这是某些Java配置的问题,还是因为警告消息导致rApache无法运行库的问题?
发布于 2012-06-17 02:44:23
是的,这是libjvm.so ;) rjava.so找不到它!
各种linux发行版(我假设您运行的是linux?)将在受限环境中启动apache,从而限制进程可以找到共享库的位置。我建议查看shell脚本,看看是否发生了这种情况。
我还将研究您的动态链接器运行时绑定配置,例如,/etc/ld.so.*文件和ldconfig命令。
尝试从您的个人R会话运行您的代码。如果它不能在那里运行,那么您需要首先修复您的java/rJava安装。如果它确实在那里运行,那么探索我上面讨论的主题。
哦,我刚刚想起来了:位于rJava包安装中的rJava可能会包含一些特定于java的环境变量。看看您的本地会话中是否发生了这种情况。如果是这种情况,那么在运行apache/rApache时,您很可能需要这些设置。
如上所述,如果您的发行版限制了apache的环境,那么您必须将这些Java环境变量填充到该限制过程中。
干杯!
杰夫
发布于 2012-11-21 03:48:45
我也遇到了同样的问题,并确定了原因是rApache没有设置LD_LIBRARY_PATH环境变量。这需要在为rJava (或任何依赖于它的包)创建R环境以正确初始化(即能够找到libjvm.so的路径)之前进行设置。
您可以使用一个简单的测试脚本来检查这一点:
setContentType('text/text')
cat(Sys.getenv()['LD_LIBRARY_PATH'], '\n')
DONE不幸的是,使用Apache的SetEnv指令的简单修复不起作用。相反,您需要执行以下操作:
(注意,以下操作是在64位RHEL5服务器上完成的)
将名为rApache_rJava.conf的文件添加到包含以下内容的/etc/ld.so.conf.d中:
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/(上面一行是我的服务器上libjvm.so的父目录的路径)
以root用户身份:
$ /sbin/ldconfig然后重新启动Apache
在Apache重新启动后,您应该能够通过依赖于rJava的rApache运行R脚本,例如,包含以下行的任何内容:
library(rJava)上面的过程以及其他参考链接也在我的博客上概述了:http://oddhypothesis.blogspot.com/2012/06/making-rapache-load-rjava.html
编辑:完全公开
上面链接的博客是我自己的
https://stackoverflow.com/questions/11056180
复制相似问题