我创建了一个骨架R包:
lib
jarFileHere.jar
R
r_code_file.R
Run Code Online (Sandbox Code Playgroud)
该r_code_file.R试图引用在类文件jarFileHere.jar:
library("rJava")
library("rjson")
.onLoad <- function(libname, pkgname) {
.jpackage(pkgname, lib.loc=libname)
}
.onLoad("packagename", "../lib/jarFileHere.jar")
.jnew("com/test/ClassHere", "")
Run Code Online (Sandbox Code Playgroud)
但是由于java.lang.NoClassDefFoundError我失败了.
我能够使用它
.jinit
.jaddClassPath("../lib/jarFileHere.jar")
Run Code Online (Sandbox Code Playgroud)
但是rJava文档明确表示不使用.jinit,因为当代码用作包时它不起作用.
我在自己的服务器上运行Rstudio.Java安装了很好的java_home和bin.R已安装.rJava已安装.
试图做命令:library("rJava")但有问题libjvm.so,按照Rstudio的建议,我sudo R CMD javareconf用root 做了.
这是我的javareconf的输出:
Java interpreter : /home/scoremd/jdk1.7.0_03/jre/bin/java
Java version : 1.7.0_03
Java home path : /home/scoremd/jdk1.7.0_03
Java compiler : /home/scoremd/jdk1.7.0_03/bin/javac
Java headers gen.: /home/scoremd/jdk1.7.0_03/bin/javah
Java archive tool: /home/scoremd/jdk1.7.0_03/bin/jar
NOTE: Your JVM has a bogus java.library.path system property!
Trying a heuristic via sun.boot.library.path to find jvm library...
Java library path: $(JAVA_HOME)/jre/lib/amd64:$(JAVA_HOME)/jre/lib/amd64/server
JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64 -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
Run Code Online (Sandbox Code Playgroud)
似乎找到java库路径存在问题...但我的java工作正常,R也是.
我没有收到来自RStudio支持和社区的任何解决方案(告诉我要求......).
我一直在使用rJava包,但由于似乎rJava不知道Java泛型类型,因此我很难用泛型类型参数创建java对象.如果我有一个java类,如:
public class A<T> {
private B<T> b;
public A(B<T> b) {
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
我想.jnew()通过传递已经创建的B对象(使用实例化的类型参数)从R会话创建一个A对象,但是rJava总是给出错误:
java.lang.NoSuchMethodError: <init>
Run Code Online (Sandbox Code Playgroud)
这有什么工作吗?
我在macOS sierra(10.12.5)上运行R(版本3.4.0),我正在尝试使用需要使用rJava库的xlsx库.
当我尝试library(rJava)在R控制台中加载rJava时(如果在RStudio或终端中没有区别),我收到以下错误消息,我无法理解:
Fehler: package or namespace load failed for ‘rJava’:
.onLoad in loadNamespace() für 'rJava' fehlgeschlagen, Details:
Aufruf: dyn.load(file, DLLpath = DLLpath, ...)
Fehler: kann shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so' nicht laden:
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
Run Code Online (Sandbox Code Playgroud)
谷歌搜索问题我发现一些帖子有点类似(但每次稍微不同的问题),这个SO问题是其中最有希望的.
由于提议的步骤需要适应我的情况,而且我是一个新手,我无法实现它们.我能做什么?
附加信息:
shell命令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)
Run Code Online (Sandbox Code Playgroud)
并且shell命令R CMD javareconf返回:
Java interpreter …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,而其他人建议从 …
我正在 R studio 中安装 XLConnect 库,但无法这样做。
我知道这个包有 java 依赖,我的 R 软件和 java 都是 64 位的。此外,两者都已正确配置。在安装 XLConnect 之前,我还安装了 rJava 包。该软件包运行正常,但现在出现此错误。
library(XLConnect)
Run Code Online (Sandbox Code Playgroud)
错误:“XLconnect”的包或命名空间加载失败:
.onload 在 XLConnect 的 loadNamespace() 中失败,详细信息:
调用。System2("cat",c("/etc/*-release"), stdout =TRUE, stderr = TRUE) 错误:'找不到“猫”。
请帮我。
当我使用 M1 架构的 Mac 时,我在 R 中安装软件包时遇到了糟糕的情况。
\n这是我到目前为止所遵循的步骤
\n安装 Java https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk,使用版本 Zulu: 16.30.19
\ninstall.packages("rJava")在R中
R CMD javareconf在终端
dyn.load("/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib")在R中
library(rJava)
这是我的错误
\nError: package or namespace load failed for \xe2\x80\x98rJava\xe2\x80\x99:\n .onLoad failed in loadNamespace() for \'rJava\', details:\n call: dyn.load(jvm, FALSE)\n error: unable to load shared object \'/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib\':\n dlopen(/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib, 10): no suitable image found. Did find:\n /Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but wrong architecture\n /Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but …Run Code Online (Sandbox Code Playgroud) 是否有人设法让rJava 0.9-3使用Oracle Java 1.7在OS X 10.7.4上工作?
R version 2.15.2 (2012-10-26) -- "Trick or Treat" Platform
x86_64-apple-darwin9.8.0/x86_64 (64-bit)
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我已经使用install.packages函数和使用R 2.15.2的命令行安装来安装rJava.我没有得到任何错误.
$ R CMD INSTALL rJava
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘rJava’ ...
* DONE (rJava)
$
Run Code Online (Sandbox Code Playgroud)
如果我使用Java首选项将1.7放在列表中,但保留1.6"on",则rJava始终启动1.6.
如果我使用Java Preferences先放1.7并关闭1.6,rJava会这样做:
> library(rJava)
> .jinit()
JavaVM: requested Java version ((null)) not available. Using Java at "" instead.
JavaVM: Failed to load …Run Code Online (Sandbox Code Playgroud) 加载 rJava 时,出现以下错误消息:
Error in get(Info[i, 1], envir = env) : lazy-load database 'C:/Users/dell_x/Documents/R/win-library/3.3/rJava/R/rJava.rdb' is corrupt
Run Code Online (Sandbox Code Playgroud)
我尝试通过执行以下所有操作将 JAVA_HOME 设置为 jre 目录:
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java')
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_121')
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_121\\bin')
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_121\\bin\\server')
Run Code Online (Sandbox Code Playgroud)
然而,它们似乎都不起作用。在此之前,我使用的是 32 位版本的 Java,并尝试将其设置为 32 位版本(Program Files (x86))。32 位版本也无法运行。
这是我查询 PATH 时得到的结果:
> Sys.getenv("PATH")
[1] "C:\\Program Files\\R\\R-3.3.0\\bin\\x64;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\WIDCOMM\\Bluetooth Software\\;C:\\Program Files\\WIDCOMM\\Bluetooth Software\\syswow64;C:\\Program Files (x86)\\Common Files\\Roxio Shared\\DLLShared\\;C:\\Program Files (x86)\\Common Files\\Roxio Shared\\10.0\\DLLShared\\;C:\\Program Files (x86)\\Skype\\Phone\\;C:\\Program Files (x86)\\Calibre2\\;C:\\Program Files\\Git\\cmd;C:\\Users\\dell_x\\AppData\\Local\\Microsoft\\WindowsApps;"
Run Code Online (Sandbox Code Playgroud)
我安装了最新版本的 Java 32 位和 64 位。我想要的只是能够在 R 中使用 open rJava。我之前提到的所有路径都不起作用(将 Java 库加载到 R 时仍然出现错误)并且我找不到特定的 jre 文件夹或要设置路径的文件。
我正在尝试安装一些软件包(mailR),以便能够通过邮件将错误和消息传达给我的用户,并通过rJdbc连接到HIVE服务器,但是随着步骤的完成,安装rJava依赖关系变得越来越复杂。
第一个错误是要求rJava软件包,因此我尝试安装rJava:
install.packages("rJava")
Installing package into ‘/home/joe/R/x86_64-pc-linux-gnu-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/rJava_0.9-11.tar.gz'
Content type 'application/x-gzip' length 675188 bytes (659 KB)
==================================================
downloaded 659 KB
* installing *source* package ‘rJava’ ...
** package ‘rJava’ successfully unpacked and MD5 sums checked
** using staged installation
checking for gcc... gcc -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 …Run Code Online (Sandbox Code Playgroud)