我想在我的Unix机器上加载'rJava'包.在加载之前,我已经使用了路径
Sys.setenv("JAVA_HOME= myfilepath")
Run Code Online (Sandbox Code Playgroud)
在我的R脚本中.
尽管如此,我收到以下错误(以下是错误的一部分):
checking Java support in R... present:
interpreter : '/usr/lib/jvm/jre/bin/java'
archiver : '/usr/lib/jvm/jre/../bin/jar'
compiler : '/usr/lib/jvm/jre/../bin/javac'
header prep.: '/usr/lib/jvm/jre/../bin/javah'
cpp flags : '-I/usr/lib/jvm/java/include I/usr/lib/jvm/java/include/linux'
java libs : '-L/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server -ljvm'
checking whether Java run-time works... ./configure: line 3729: /usr/lib/jvm/jre/bin/java: No such file or directory
no configure: error: Java interpreter '/usr/lib/jvm/jre/bin/java' does not work
Run Code Online (Sandbox Code Playgroud)
如您所见,错误显示/ usr/lib/jvm/jre/bin/java:没有这样的文件或目录.但我没有将其设置为myfilepath.如何阻止安装程序查看此路径?
请帮助.
我有一个包"javaOnLoadFailed"(只是用于测试我的问题的最小包,因此是奇怪的名称),它导入了rJava.当我尝试检查()或安装()包时,我得到'rJava'错误,即使require(rJava)本身工作正常.
install()给出以下错误:
> install()
Installing javaOnloadFailed
"C:/Program Files/R/R-3.2.0/bin/x64/R" --no-site-file --no-environ --no-save \
--no-restore CMD INSTALL \
"C:/Projects/stackoverflow/javaOnloadFailed/javaOnLoadFailed" \
--library="C:/Users/adb2018/Documents/R/win-library/3.2" --with-keep.source \
--install-tests
* installing *source* package 'javaOnloadFailed' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: inDL(x, as.logical(local), as.logical(now), ...)
error: unable to load shared object 'C:/Users/adb2018/Documents/R/win-library/3.2/rJava/libs/i386/rJava.dll':
LoadLibrary …Run Code Online (Sandbox Code Playgroud) 我试图用之前的问题/答案解决这个问题,但没有任何成功.所以,这是我的问题.
我正在使用RStudio和Ubuntu盒子(14.04),我试图从源代码升级rJava,在这个过程中我设法失去了它.
我尝试再次使用,安装它,
install.packages("rJava")
Run Code Online (Sandbox Code Playgroud)
返回以下错误消息,
configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.
If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status …Run Code Online (Sandbox Code Playgroud) 我使用来自CRAN apt repo的R 2.13用于Ubuntu 10.04,我正在尝试安装Deducer,它需要JGR/rJava,但是rJava拒绝构建/安装,抱怨无法构建JNI应用程序.我sudo R CMD javareconf按照建议尝试,但只导致关于配置未设置的不同错误.我发现R:rJava包安装失败,所以我尝试了安装的建议r-cran-rjava(但是0.8和Deducer/JGR似乎坚持安装0.9)并摆弄我$JAVA_HOME,一切都无济于事.有任何想法吗?
以下是发生的事情的更完整的记录:
$ sudo aptitude install r-cran-rjava
...
$ R
R version 2.13.1 (2011-07-08)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-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 …Run Code Online (Sandbox Code Playgroud) 嗨,我有来自cran的rJava包的问题.
我安装了
sudo apt-get install openjdk-7-jdk
sudo apt-get install r-cran-rjava
Run Code Online (Sandbox Code Playgroud)
跑了
sudo R CMD javareconf
# Java interpreter : /usr/bin/java
# Java version : 1.7.0_55
# Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
# Java compiler : /usr/bin/javac
# Java headers gen.: /usr/bin/javah
# Java archive tool: /usr/bin/jar
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行R并加载rJava并得到以下错误:
R
> library(rJava)
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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在基于debian(jessie)和Anaconda的docker容器中安装rJava.
作为根,我做到了
$ apt-get update && apt-get install -y --no-install-recommends \
default-jdk default-jre libicu-dev
Run Code Online (Sandbox Code Playgroud)
然后
$ R CMD javareconf
Java interpreter : /usr/lib/jvm/jdk1.8.0_121/jre/bin/java
Java version : 1.8.0_121
Java home path : /usr/lib/jvm/jdk1.8.0_121
Java compiler : /usr/lib/jvm/jdk1.8.0_121/bin/javac
Java headers gen.: /usr/lib/jvm/jdk1.8.0_121/bin/javah
Java archive tool: /usr/lib/jvm/jdk1.8.0_121/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/opt/conda/lib/R/include -DNDEBUG -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux -I/opt/conda/include -fpic -I/opt/conda/include -c conftest.c -o conftest.o
conftest.c:1:17: …Run Code Online (Sandbox Code Playgroud) 我通过调用install.packages("rJava")来安装rJava - 没有看到任何问题
但是当我打电话时:
library(rJava)
.jinit()
Run Code Online (Sandbox Code Playgroud)
我明白了:
JavaVM: requested Java version ((null)) not available. Using Java at "" instead.
JavaVM: Failed to load JVM: /bundle/Libraries/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.
Error in .jinit() : JNI_GetCreatedJavaVMs returned -1
Run Code Online (Sandbox Code Playgroud)
我正在运行OSX:
Darwin MBP-2 14.5.0 Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)
我安装了以下Sun JDK:
$ ls /Library/Java/JavaVirtualMachines/
jdk1.7.0_79.jdk jdk1.8.0_65.jdk
Run Code Online (Sandbox Code Playgroud)
我的PATH上有哪个Java:
$ which java
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home//bin/Java
Run Code Online (Sandbox Code Playgroud)
我也将JavaHome定义为:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/
Run Code Online (Sandbox Code Playgroud) 我在一台安装了R版本3.5.1的Ubuntu 18.04机器上,按照此链接安装.我试图安装CRAN包rJava,这是我做下面的方式(如看到这里):
sudo apt-get install r-cran-rjava
Run Code Online (Sandbox Code Playgroud)
但是,我明白了:
The following packages have unmet dependencies:
r-cran-rjava : Depends: r-api-3.4
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
sudo apt-get install r-api-3.4
Run Code Online (Sandbox Code Playgroud)
我明白了:
E: Package 'r-api-3.4' has no installation candidate
Run Code Online (Sandbox Code Playgroud)
如何克服这个问题r-api-3.4?基本上,我需要安装rJava才能安装和使用XLConnect...在Ubuntu 16.04中,我没有任何问题......
编辑:
显然,r-api-3.4应该由提供r-base-core.我确实r-base-core安装了最新版本,为什么我仍然会看到错误呢?
我想rJava结合使用,mcparallel但显然JVM不能分叉.因此,需要为每个子进程启动单独的JVM实例,例如:
library(rJava)
library(parallel)
myfile <- system.file("tests", "test_import.xlsx", package = "xlsx")
#This works:
mccollect(mcparallel({
#Automatically initiates JVM in child
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
但是我的问题是JVM已经在(主)父进程中启动了.这使得无法rJava在子进程中使用:
#init JVM in parent
.jinit()
#Doesn't work anymore
mccollect(mcparallel({
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
所以我真正需要的是在子进程中关闭/终止和重启JVM的方法.只是 detach("package:rJava", unload = TRUE)似乎没有这样的伎俩.该force.init参数似乎不会导致重启:
#Also doesn't work:
.jinit()
mccollect(mcparallel({
.jinit(force.init = TRUE)
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以强制关闭/杀死JVM以便在子进程中重新启动它?
Rstudio的编织按钮无法编写包含rJava包的rmarkdown(Rmd)文件.但是,如果我使用rmarkdown::render(),相同的Rmd文件将呈现为html而不会出现问题.
我可以使用以下代码重现错误:
test.Rmd的内容:
---
title: "test"
output: html_document
---
```{r}
library(rJava)
```
Run Code Online (Sandbox Code Playgroud)
单击编织按钮按钮将返回:
processing file: test.Rmd
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava/libs/rJava.so
Reason: image not found
Quitting from lines 7-8 (test.Rmd)
Error: package or namespace load failed for 'rJava'
Execution halted
Run Code Online (Sandbox Code Playgroud)
并且rmarkdown::render("test.Rmd")工作正常.此外,library(rJava)正常运行(非编织)也可以正常工作(在RStudio内).
在macOS Sierra 10.12中使用RStudio版本1.0.136,knitr 1.15.1,rmarkdown 1.3,rJava 0.9-8,R 3.3.2. …