我试图在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 [命令行]里面。 上面的命令会给你一个路径。 你将能够找到
这是JRI正在寻找的共享库。 你可以通过JAVA_OPTS指定这个路径
-Djava.library.path=${path-retrieved-from-R}
这将在Tomcat初始化时传递给JVM设置。
如果您正在使用多个库,请将相应的库路径java选项分组。