创建R包时包含jar文件

tom*_*eng 8 java r rjava

我创建了一个骨架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,因为当代码用作包时它不起作用.

Ian*_*ows 10

使你的结构像:

inst
 java
  jarFileHere.jar 
R
 r_code_file.R
Run Code Online (Sandbox Code Playgroud)

有关如何在包中包含java的示例,请查看helloJavaWorld包.

另请参阅DeducerDeducerplugInExample的来源.在Deducer的网络手册中有一个关于在你的软件包中包含java代码的教程:http://www.deducer.org/pmwiki/pmwiki.php?n = Main.Development#suaptijc