R-Project:xlsx 包安装失败(由于 java 问题)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/26806776/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
R-Project: xlsx package installation failure (due to java issues)
提问by tamasp
I was trying to install the xlsx package, unfortunately, there is an issue with Java, which I am unable to solve.
我试图安装 xlsx 包,不幸的是,Java 存在一个我无法解决的问题。
Please find below the output produced when trying to install the package xlsx.
请在尝试安装 xlsx 包时生成的输出下面找到。
Here's the output:
这是输出:
R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> install.packages("xlsx")
Installing package into ‘/home/tamaspavlicek/R/x86_64-redhat-linux-gnu-library/3.1'
(as ‘lib' is unspecified)
also installing the dependencies ‘rJava', ‘xlsxjars'
trying URL 'contrib/rJava_0.9-6.tar.gz'
Content type 'application/x-gzip' length 567515 bytes (554 Kb)
opened URL
==================================================
downloaded 554 Kb
trying URL 'contrib/xlsxjars_0.6.1.tar.gz'
Content type 'application/x-gzip' length 9477071 bytes (9.0 Mb)
opened URL
==================================================
downloaded 9.0 Mb
trying URL 'contrib/xlsx_0.5.7.tar.gz'
Content type 'application/x-gzip' length 312839 bytes (305 Kb)
opened URL
==================================================
downloaded 305 Kb
* installing *source* package ‘rJava' ...
** package ‘rJava' successfully unpacked and MD5 sums checked
checking for gcc... gcc -m64 -std=gnu99
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc -m64 -std=gnu99 accepts -g... yes
checking for gcc -m64 -std=gnu99 option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -m64 -std=gnu99 -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking whether time.h and sys/time.h may both be included... yes
configure: checking whether gcc -m64 -std=gnu99 supports static inline...
yes
checking whether setjmp.h is POSIX.1 compatible... yes
checking whether sigsetjmp is declared... yes
checking whether siglongjmp is declared... yes
checking Java support in R... present:
interpreter : '/bin/java'
archiver : '/bin/jar'
compiler : '/bin/javac'
header prep.: '/bin/javah'
cpp flags : '-I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include -I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include/linux'
java libs : '-L/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64/server -ljvm'
checking whether Java run-time works...
Error: Could not find or load main class getsp
no
configure: error: Java interpreter '/bin/java' does not work
ERROR: configuration failed for package ‘rJava'
* removing ‘/home/tamaspavlicek/R/x86_64-redhat-linux-gnu-library/3.1/rJava'
Warning in install.packages :
installation of package ‘rJava' had non-zero exit status
ERROR: dependency ‘rJava' is not available for package ‘xlsxjars'
* removing ‘/home/tamaspavlicek/R/x86_64-redhat-linux-gnu-library/3.1/xlsxjars'
Warning in install.packages :
installation of package ‘xlsxjars' had non-zero exit status
ERROR: dependencies ‘rJava', ‘xlsxjars' are not available for package ‘xlsx'
* removing ‘/home/tamaspavlicek/R/x86_64-redhat-linux-gnu-library/3.1/xlsx'
Warning in install.packages :
installation of package ‘xlsx' had non-zero exit status
The downloaded source packages are in
‘/tmp/Rtmpj1UG8a/downloaded_packages'
Java is installed:
安装了Java:
java -version gives the following output:
java -version 给出以下输出:
java version "1.7.0_71"
OpenJDK Runtime Environment (fedora-2.5.3.0.fc20-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
"sudo R CMD javareconf" leads to:
“sudo R CMD javareconf”导致:
Java interpreter : /bin/java
Java version : 1.7.0_71
Java home path : /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre
Java compiler : /bin/javac
Java headers gen.: /bin/javah
Java archive tool: /bin/jar
trying to compile and link a JNI progam
detected JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -m64 -std=gnu99 -I/usr/include/R -DNDEBUG -I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include -I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include/linux -I/usr/local/include -fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -c conftest.c -o conftest.o
gcc -m64 -std=gnu99 -shared -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64/server -ljvm -L/usr/lib64/R/lib -lR
JAVA_HOME : /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
Updating Java configuration in /usr/lib64/R
Done.
Nonetheless, install.packages('rJava') leads to:
尽管如此, install.packages('rJava') 导致:
checking Java support in R... present:
interpreter : '/bin/java'
archiver : '/bin/jar'
compiler : '/bin/javac'
header prep.: '/bin/javah'
cpp flags : '-I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include -I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../include/linux'
java libs : '-L/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64/server -ljvm'
checking whether Java run-time works...
Error: Could not find or load main class getsp
no
configure: error: Java interpreter '/bin/java' does not work
ERROR: configuration failed for package ‘rJava'
* removing ‘/home/tamaspavlicek/R/x86_64-redhat-linux-gnu-library/3.1/rJava'
Warning in install.packages :
installation of package ‘rJava' had non-zero exit status
The downloaded source packages are in
‘/tmp/Rtmpnl17m7/downloaded_packages'
I have no idea how to fix this java problem. I work with RStudio and Fedora. Your help is much appreciated.
我不知道如何解决这个 java 问题。我使用 RStudio 和 Fedora。非常感谢您的帮助。
Thanks
谢谢
Tamas
塔马斯
回答by cdeterman
If you have Java installed, try resetting R's java configuration from the commandline
如果您安装了 Java,请尝试从命令行重置 R 的 java 配置
sudo R CMD javareconf
Then try again to install just rJava
(you might restart RStudio first)
然后再次尝试安装rJava
(您可以先重新启动 RStudio)
install.packages('rJava')
If this still didn't solve your problem, the error shows that R could not load getsp.:
如果这仍然不能解决您的问题,则错误表明 R 无法加载 getsp。:
checking whether Java run-time works...
Error: Could not find or load main class getsp
First verify that getsp is accessible.
首先验证getsp 是否可访问。
locate getsp
The output may contain several items but you should find something like this:
输出可能包含多个项目,但您应该会发现如下内容:
/usr/share/R/share/java/getsp.class
Then we want this to be accessible so export it so R can find it:
然后我们希望它是可访问的,因此导出它以便 R 可以找到它:
export CLASSPATH=/usr/share/R/share/java
In the same window, start another R session and try installing rJava
again.
在同一窗口中,启动另一个 R 会话并rJava
再次尝试安装。
Another thing to rest would be JAVA_HOME and rerun the javareconf
另一件事是 JAVA_HOME 并重新运行 javareconf
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre
export PATH=$PATH:$JAVA_HOME/bin
sudo R CMD javareconf
It is also recommended to unset CLASSPATH
in the rJava issuesas it may cause other issues down the line. You probably should do this before trying to change JAVA_HOME and reset again if this still doesn't solve the problem.
还建议unset CLASSPATH
在rJava 问题中使用它,因为它可能会导致其他问题。如果仍然不能解决问题,您可能应该在尝试更改 JAVA_HOME 并再次重置之前执行此操作。
EDIT
编辑
Given that this question has remained 'unanswered' for quite some time I thought I should also add my recommendation to just use the readxlpackage instead which does not use Java. It installs much easier and is part of the tidyverse. Just a general recommendation for those trying to work with excel files.
鉴于这个问题在很长一段时间内一直“没有答案”,我想我还应该添加我的建议,只使用不使用 Java的readxl包。它安装起来要容易得多,并且是 tidyverse 的一部分。只是对那些尝试使用 excel 文件的人的一般建议。
回答by tamasp
Okay, I finally managed it by adding "JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.25.x86_64/jre/" to .bashrc in my home folder.
好的,我终于通过将“JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.25.x86_64/jre/”添加到我的主文件夹中的.bashrc来管理它。
Thank you for your help, cdeterman.
谢谢你的帮助,cdeterman。
Best Tamas
最好的玉米饼
回答by sunny
This solution worked for me perfectly:
这个解决方案对我很有效:
https://orajavasolutions.wordpress.com/2014/06/03/installing-and-loading-xlsx-package-in-r-with-ubuntu/
回答by Che
It is the problem of Java. I think that you have not installed Java on your system. Check if Java already installed:
这是Java的问题。我认为您还没有在您的系统上安装 Java。检查 Java 是否已经安装:
java -version
If it returns "The program java can be found in the following packages", Java hasn't been installed yet, so execute the following command:
如果返回“该程序java可以在以下包中找到”,则Java尚未安装,因此执行以下命令:
sudo apt-get install default-jre
sudo apt-get install default-jdk
Then try to reinstall the package.
然后尝试重新安装软件包。