我正在尝试在 RHEL6 (6.4) 上设置 R 和 Tomcat
我已经安装了 R 并且可以运行它。我已经安装了 Tomcat 7 并且可以托管文件文件。我已将应用程序打包为 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)
我确实在 R 下安装了 rJava: install.packages("rJava") 它安装得很好,我在 R 的库文件夹中有 rJava。
我在 /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 下运行,我可以确认 root 能够通过“ echo $JAVA_HOME
”、“ echo $R_HOME
”、“ echo $LD_LIBRARY_PATH
”、“ echo $PATH
”看到上面设置的所有路径
所以我不确定为什么它抱怨它无法打开那些 .so 文件。
此外,当它崩溃时,它会关闭 Tomcat。
谢谢!