我创建了一个骨架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,因为当代码用作包时它不起作用。
答案 0 :(得分:10)
使您的结构如下:
inst
java
jarFileHere.jar
R
r_code_file.R
有关如何在包中包含java的示例,请查看helloJavaWorld包。
另请查看Deducer和DeducerplugInExample的来源。在Deducer的网络手册中有一个关于在你的包中包含java代码的教程: http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#suaptijc