我创建了一个框架R包:

lib
 jarFileHere.jar
R
 r_code_file.R

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", "")

但是由于java.lang.NoClassDefFoundError而导致失败。

我能够使用它来工作
.jinit
.jaddClassPath("../lib/jarFileHere.jar")

但是rJava文档明确表示不要使用.jinit,因为当代码用作包时,它将不起作用。

最佳答案

使您的结构像:

inst
 java
  jarFileHere.jar
R
 r_code_file.R

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

还要看看DeducerDeducerplugInExample的来源。可以在Deducer的网络手册上找到有关在包中包含Java代码的教程:
http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#suaptijc

10-01 08:44