您似乎正在尝试在脚本中的某处使用.when,但.when 没有这种方法。
问题可能是您的某个库 (R?) 的版本比您使用的文档的版本旧,或者 .when 调用从一开始就不存在。
解决此问题的最简单方法是搜索并找出在您的代码中调用 .when 的位置,然后检查是否有其他方法可以代替,或者您是否只需要更新到较新的库.
在打开每个文件和将它们读取到表格之间添加一些调试代码以打印到控制台,这样您至少可以看到代码在失败之前走了多远。
有关错误调用位置的参考,您可以在此处查看rJava 的源代码:
https://github.com/cran/rJava/blob/master/R/reflection.R
当 rJave 尝试查找函数但找不到它时,请特别注意最后一个 else 块中的错误:
### syntactic sugar to allow object$field and object$methods(...)
### first attempts to find a field of that name and then a method
._jobjRef_dollar <- function(x, name) {
if (hasField(x, name) ){
.jfield(x, , name)
} else if( hasJavaMethod( x, name ) ) {
function(...) .jrcall(x, name, ...)
} else if( hasClass(x, name) ) {
cl <- .jcall( x, "Ljava/lang/Class;", "getClass" )
inner.cl <- .jcall( "RJavaTools", "Ljava/lang/Class;", "getClass", cl, name, FALSE )
new("jclassName", name=.jcall(inner.cl, "S", "getName"), jobj=inner.cl)
} else if( is.character(name) && length(name) == 1L && name == "length" && isJavaArray(x) ){
length( x )
} else {
stop( sprintf( "no field, method or inner class called '%s' ", name ) )
}
}