如何设置R的环境variables在RedHat Linux(RHEL6)上的Tomcat中使用

我试图在RHEL6上设置R和Tomcat(6.4)

我已经安装了R,可以运行它。 我已经安装了Tomcat 7并且可以托pipe文件文件。 我将应用程序打包为一个WAR文件,并使用tomcat进行部署。 应用程序运行良好,直到它使用任何R组件。

这是它在catalina.out中看到的以下错误崩溃的地方:

Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.li brary.path. java.lang.UnsatisfiedLinkError: /usr/local/lib64/R-2.15.3/library/rJava/jri/libj ri.so: libR.so: cannot open shared object file: Too many levels of symbolic link s at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19) 

我有RJava下安装R:install.packages(“rJava”)它安装正常,我有R的库里面的R库文件夹。

我在/ etc / profile中定义了以下内容:

 export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre export R_HOME=/usr/local/lib64/R-2.15.3 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$R_HOME/bin export PATH export LD_LIBRARY_PATH=$R_HOME/lib/libR.so,$JAVA_HOME/lib/amd64/server/libjvm.so 

据我的理解,应该为服务器上的所有用户全局设置JAVA_HOME,R_HOME,PATH和LD_LIBRARY_PATH。 我知道Tomcat在root下运行,我可以通过“ echo $JAVA_HOME ”,“ echo $R_HOME ”,“ echo $LD_LIBRARY_PATH ”,“ echo $PATH ”来确认root能够看到上面所有的path。

所以我不知道为什么它抱怨说无法打开这些.so文件。

另外,当它崩溃了,它closures了Tomcat。

谢谢!

当我在tomcat中使用R库时,我遇到了同样的问题。 找不到R_HOME。

解决的办法是更新一个为tomcat设置路径的文件,因为tomcat设置自己的变量。 该文件是“yourPathToTomcat / tomcat / bin / setclasspath.sh”,打开它并在最后添加“export R_HOME = yourPathToR”(就像你在linux环境中添加的那样,例如:export R_HOME = / usr / lib / R) 。 然后你可以运行你的应用程序,它会工作。 希望它可以帮助某人。 :d

要从Java使用R,您需要安装JRI。 幸运的是,JRI现在是rJava的一部分,并且已经安装了。

JRI将需要自己的本地共享库,它已经与rJava一起安装。 要找到与rJava一起安装的JRI,请使用

  system.file("jri",package="rJava") 

从R [命令行]里面。 上面的命令会给你一个路径。 你将能够找到

libjri.so

这是JRI正在寻找的共享库。 你可以通过JAVA_OPTS指定这个路径

  -Djava.library.path=${path-retrieved-from-R} 

这将在Tomcat初始化时传递给JVM设置。

如果您正在使用多个库,请将相应的库路径java选项分组。