我在centOS VM(cloudera cdh3u4)上安装rJava时遇到问题.
我先做了这个:sudo R CMD javareconf
[cloudera@localhost ~]$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.6.0_31
Java home path : /usr/java/jdk1.6.0_31/jre
Java compiler : /usr/bin/javac
Java headers gen.:
Java archive tool: /usr/bin/jar
Java library path: $(JAVA_HOME)/lib/amd64/server:$(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm
JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux
Updating Java configuration in /usr/lib64/R
Done.
Run Code Online (Sandbox Code Playgroud)
但是当我想安装rJava时,我明白了:
> install.packages( c('rJava'),
+ repos='http://cran.revolutionanalytics.com')
...
configure: error: One or more Java configuration …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 RHEL6 (6.4) 上设置 R 和 Tomcat
我已经安装了R并且可以运行它。我已经安装了Tomcat 7并且可以托管文件file。我已将应用程序打包为 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)
Run Code Online (Sandbox Code Playgroud)
我确实在 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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试像这样从R调用特定的java方法,
library(rJava)
.jinit()
.jaddClassPath("E:\\JAVA learn\\check\\bin") # path to class file
.jclassPath()
obj1 <- .jnew("check") #to create an object
result <- .jcall(obj1, "I", "try")
result
Run Code Online (Sandbox Code Playgroud)
我的检查类中的try方法是这样的
public int try()
{
return 30;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我更新try方法以返回50并重做上述步骤时,结果的值仍然仅为30,并且没有更新。
如果我关闭R并再次打开并运行它,其更新结果将为50。我希望它在不重新启动R的情况下更新结果值。请帮助!
我无法在 R 上使用 rjava 解决我的问题。
当我安装 rJava 包并需要它时,我没有任何问题。
install.packages("devtools")
install.packages("rJava")
library(rJava)
Sys.setenv(JAVA_HOME="C:/Program Files (x86)/Java/jre1.8.0_77")
devtools::install_github("kassambara/r2excel",INSTALL_opts="--no-multiarch")
Run Code Online (Sandbox Code Playgroud)
当我编译最后一行时,我遇到了这个问题:
* installing *source* package 'r2excel' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
*** arch - x64
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: inDL(x, as.logical(local), as.logical(now), ...)
error: impossible de charger l'objet partagé 'C:/Users/itm/Documents/R/win-library/3.2/rJava/libs/x64/rJava.dll':
LoadLibrary failure: %1 …Run Code Online (Sandbox Code Playgroud) 我是编程和 R 的新手,但是,我正在尝试安装“xlsx”包(以及 XLConnect)以便通过 R 操作 Excel 文件。我正在运行 RStudio 版本 1.0.153,R 版本 3.4。 2 在 Mac OSX 10.12.6 上。
首先,我尝试通过 RStudio 安装包install.packages('xlsx')并使用library('xlsx'). 我收到此错误:
> library('xlsx')
Loading required package: rJava
Error: package or namespace load failed for ‘rJava’:
.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.4/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
Reason: image not found
Error: package ‘rJava’ could not be …Run Code Online (Sandbox Code Playgroud) 出于安全原因,我被迫在使用 R 的计算机上卸载 Java (JRE)。
我如何(轻松地:-)发现所有已安装的使用 Java 的软件包?
编辑 2021 年 12 月 14 日: log4j-log4shell-cve-2021-44228-漏洞使这个问题(和答案)变得更加有趣;-)
我有一个使用“xlsx”作为依赖项的包,如果我从本地文件安装库,该包会很好地安装。library(packagename)工作正常,所以做library(xlsx)and library(rJava)。我们刚刚开始实施一些急需的版本控制的过程,但是,当尝试从 git 存储库安装相同的包时,我收到以下错误:
devtools::install_git(path)
Run Code Online (Sandbox Code Playgroud)
...
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error: package or namespace load failed for 'xlsx':
.onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
Error : package 'xlsx' could not be loaded
Error: loading failed
Execution halted
*** arch - …Run Code Online (Sandbox Code Playgroud) 使用 rJava 进行调用时,有没有办法以 R 中的字符向量捕获 java 写入控制台/标准输出的输出?有没有办法做到这一点,而不将java的stdout重定向到文件并让R读取文件?
在我的特定用例中,我使用 RJDBC 连接到数据库,服务器将发回打印到控制台的有用信息。我想解析这些消息,提取一些信息,并采取相应的行动。
当我进行运行 java 代码的函数调用时,任何控制台输出都会转发到 RStudio 控制台,但capture.output似乎不起作用(我type = "output"也尝试过)
rJava::.jinit()
jText <- capture.output(
rJava::J("java/lang/System")$out$println("Write this down"),
type = "message"
)
identical(jText, character(0))
#> [1] TRUE
Run Code Online (Sandbox Code Playgroud)
我可以通过将 java stdout 重定向到文件来做到这一点,但是有没有办法避免写入文件?例如,我可以这样提取 HAL 9000 正在与谁交谈:
rJava::.jinit()
jSys <- rJava::J("java/lang/System")
jOut <- tempfile(fileext = ".txt")
jOrigOut <- jSys$out
jPS <- rJava::.jnew("java/io/PrintStream", jOut)
jSys$setOut(jPS)
jSys$out$println("I'm sorry Dave. I'm afraid I can't do that")
jSys$setOut(jOrigOut)
msg <- readLines(jOut)
regmatches(msg, regexpr("(?<=I'm sorry ).*(?=\\.)", msg, perl …Run Code Online (Sandbox Code Playgroud) 我刚刚开始我的 R 冒险,所以每个问题都是值得挑战的。不幸的是,我已经将我的 R 更新到 3.6,我不得不重新下载每个包。这是我的问题 - 在安装 rJava 时,我的安装因以下错误而被取消:
usr/bin/ld: cannot find -lpcre2-8
我已经下载并安装了 pcre2 包,但它仍然不起作用。我正在使用 Ubuntu 18.04
我正在尝试rJava在 Mac上安装,但收到以下错误消息:
[...]
checking whether javah was replaced by javac -h... no
configure: error: one or more Java tools are missing.
*** JDK is incomplete! Please make sure you have a complete JDK. JRE is *not* sufficient.
configure: error: ./configure failed for jri
ERROR: configuration failed for package ‘rJava’
* removing ‘/usr/local/lib/R/3.6/site-library/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status
Run Code Online (Sandbox Code Playgroud)
但是,我有java,javac所以我不只是有一个 JRE:
$ java -version
openjdk version "1.8.0_242" …Run Code Online (Sandbox Code Playgroud)