我不是Java程序员.我编写R和C++.我有一些我希望包含在R包中的java代码.该计划的基础是这样的:
我想将它转换为R,我可以从R运行程序.我熟悉Rcpp包,并习惯了它的一些便利.从哪里开始使用rJava包来学习使用此代码.
具体来说,我有以下问题.
rJava文档不是很有帮助.有人有这方面的教程吗?
我试图安装xlsx软件包,遗憾的是,Java存在一个问题,我无法解决.
请在下面找到尝试安装xlsx包时产生的输出.
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 …Run Code Online (Sandbox Code Playgroud) 我在rJava上关注本教程:http://cran.r-project.org/web/packages/helloJavaWorld/vignettes/helloJavaWorld.pdf
我已经制作了教程中指定的所有文件并安装了helloJavaWorld包,但是一旦我运行了helloJavaWorld()函数,就会抱怨:
> helloJavaWorld()
Error in .jnew("HelloJavaWorld") :
java.lang.UnsupportedClassVersionError: HelloJavaWorld : Unsupported major.minor version 52.0
Run Code Online (Sandbox Code Playgroud)
所以我试着检查rJava正在使用的java版本:
.jinit()
jvm = .jnew("java.lang.System")
jvm.props = jvm$getProperties()$toString()
jvm.props <- strsplit(gsub("\\{(.*)}", "\\1", jvm.props), ", ")[[1]]
jvm.props
[1] "java.runtime.name=Java(TM) SE Runtime Environment"
[2] "sun.boot.library.path=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries"
[3] "java.vm.version=20.65-b04-466.1"
[4] "awt.nativeDoubleBuffering=true"
[5] "gopherProxySet=false"
[6] "mrj.build=11M4716"
[7] "java.vm.vendor=Apple Inc."
[8] "java.vendor.url=http://www.apple.com/"
[9] "path.separator=:"
[10] "java.vm.name=Java HotSpot(TM) 64-Bit Server VM"
[11] "file.encoding.pkg=sun.io"
[12] "user.country=US"
[13] "sun.os.patch.level=unknown"
[14] "java.vm.specification.name=Java Virtual Machine Specification"
[15] "user.dir=/private/tmp"
[16] "java.runtime.version=1.6.0_65-b14-466.1-11M4716"
[17] "java.awt.graphicsenv=apple.awt.CGraphicsEnvironment"
[18] "java.endorsed.dirs=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/endorsed" …Run Code Online (Sandbox Code Playgroud) 我使用的是64位机器,最新版本的R(3.1.2),最新的RStudio版本(0.98.1091)和最新的JAVA(版本8更新31).
我试图要求rJava(rJava_0.9-6),结果是以下错误:
require(xlsx)
Carregando pacotes exigidos: rJava
Error : .onLoad falhou em loadNamespace() para 'rJava', detalhes:
chamada: fun(libname, pkgname)
erro: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
Failed with error: ‘package ‘rJava’ could not be loaded’
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新安装Java而没有成功.
有谁知道我该如何解决这个问题?
我正在尝试使用R来挂钩GSRad项目中的Java代码.GSRad Java代码可以在线获得,并作为One-Jar项目jar(直到今天我还不熟悉One-Jar).我可以使用以下命令运行One-Jar文件(在从上面的链接解压缩文件之后):
java -jar gsrad_sample.jar
Run Code Online (Sandbox Code Playgroud)
当我弹出gsrad_sample.jar文件时,我在/ lib /目录中看到一个名为clima_GSRAD-1.0.0.jar的jar,其中包含我想要与R挂钩的类文件.我已经拿出了我喜爱的jar和尝试以下,无济于事:
library(rJava)
.jinit()
.jaddClassPath( "/home/jal/Documents/DSSAT/gsrad/clima_GSRAD-1.0.0.jar" )
.jnew( "cra/clima/gsrad/GSRBristowCampbellStrategy" )
Run Code Online (Sandbox Code Playgroud)
关于我如何挂钩clima_GSRAD-1.0.0.jar中的类的任何提示?我很沮丧.
编辑
GSRad网站需要注册,这很烦人.其中包含了Java包的Doxygen文档以及单瓶瓶文件的完整的zip文件,请点击这里,如果你弹出打开有我想要挂钩类的罐子是这一个.
我write.xlsx2对xlsxR包的功能有问题.例如,请参阅下面的代码.
main_path<-"~/mydir/"
read.xlsx2(paste0(main_path,"my_input_excel.xlsx"), sheetIndex=1)
a<-1
write.xlsx2(a, paste0(main_path,"my_output_excel.xlsx"), sheetName="Sheet1", col.names=TRUE, row.names=FALSE, append=FALSE)
Run Code Online (Sandbox Code Playgroud)
虽然read.xlsx2功能工作正常,write.xlsx2函数提供错误
错误
.jnew("java/io/FileOutputStream", jFile):
java.io.FileNotFoundException:/mydir/my_output_excel.xlsx(没有这样的文件或目录)
当我删除paste0部件并只写文件名时,一切都很好.所以问题是定义路径.
ps我想知道,也许write.xlsx忽略了波浪号,~所以路径定义变成了垃圾.
当我在R中使用包来加载数据时遇到了这个错误,在这个包rJava中使用了pakcage .
每次运行函数时,错误都是
Error in ls(envir = envir, all.names = private) :
invalid 'envir' argument
Run Code Online (Sandbox Code Playgroud)
这个包已被证明没有任何问题,只是我的电脑中的一些环境问题.
当我调试时,我发现在ls(envir=envir?all.names = private )
变量之前的最后一个进程
envir中NULL,我认为应该是一些值但不是NULL.
经过一些试验,我通过rJava每次安装来解决问题.另外,只有当错误出现时,我才会安装'rJava',它会起作用.如果我在第一次安装,它将无法正常工作.所以,我想,安装'rJava'(或者可能正在安装包)会导致一些环境变量发生变化.
Java 7和Java 8(包括jdk或jre)都经过测试,不起作用.对于R,我使用3.1.3 R并且所有包都是最新的.
以下是我认为可能对故障排除有用的一些信息.
通过安装包,jvm.dll needs to be added to the windows environment path: "Path"我做到了.
我的sessionInfo如下所示:
R version 3.1.3 (2015-03-09)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=Danish_Denmark.1252 LC_CTYPE=Danish_Denmark.1252 LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C
[5] LC_TIME=Danish_Denmark.1252
attached base packages:
[1] grid …Run Code Online (Sandbox Code Playgroud) 所以我尝试了之前提出的问题答案.但我仍然有相同的错误消息:我正在尝试rJava在R中加载库
library(rJava)
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/Lauriane/Documents/R/win-library/3.3/rJava/libs/x64/rJava.dll':
LoadLibrary failure: The specified module could not be found.
Error: package or namespace load failed for ‘rJava’
Run Code Online (Sandbox Code Playgroud)
请帮忙,
谢谢
我正在尝试在MacOS Sierra上安装rJava.必须尝试其他其他版本MacOS的提示和指南,如https://github.com/snowflakedb/dplyr-snowflakedb/wiki/Configuring-R-rJava-RJDBC-on-Mac-OS-X 和安装xlsx和在Mac上的rJava
但它没有成功.非常感谢任何帮助.谢谢.
我的Mac版:macOS Sierra,版本10.12.15我的R版本:3.4.0(2017-04-21)我的Rstudio版本:版本0.99.903
Java版本:
bash-3.2$ /usr/libexec/java_home -V
bash-3.2$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
bash-3.2$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.8.0_131
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on macOS
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/../include …Run Code Online (Sandbox Code Playgroud) 我有一个非常常见的问题,即 rJava 无法在 Ubuntu 上正确安装。此问题已在此处、此处、此处等多个地方讨论过。
基本问题是,在安装rJava包时,产生以下错误信息
configure: error: Unable to run a simple JNI program. Make sure you have configured R with Java support (see R documentation) and check config.log for failure reason.
Warning in system(cmd) : error in running command
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/jonno/R/x86_64-pc-linux-gnu-library/3.6/rJava’
Run Code Online (Sandbox Code Playgroud)
这个问题有各种密切相关的解决方案。它们中的大多数sudo R CMD javareconf用于为 R 配置 Java(也是一个-e变体)。有些人建议JAVA_HOME在环境变量中设置路径(其他人说不要)。其他人建议卸载并重新安装 R,而其他人建议从 …
rjava ×10
r ×9
java ×4
installation ×1
macos ×1
macos-sierra ×1
r-xlsx ×1
ubuntu ×1
ubuntu-18.04 ×1
windows ×1
xlsx ×1