2017-08-08 2 views
0

私は私が作成した関数を実行しようとしていますし、私はこれらのエラーを取得していますRバージョン3.4.1とJavaのバージョン1.8.0_131 とRスタジオを実行しています私は特定の機能RのJava

java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 

を実行したときに、私は誰が何のようなアイデアを持っている可能性がある場合、私は疑問に思って

Error in ._jobjRef_dollar(x[["jobj"]], name) : 
     no field, method or inner class called '.when' 

全体のスクリプトを実行すると、このエラー私はこのエラーを取得します私は関数を投稿する前に、これらのエラーの原因です。それはかなり長いです。基本的には複数のファイルを開いてテーブルとして読み込んでいます。各パスは正確で、個別に動作します。

+2

"*私は関数を投稿する前に" - 常に関連情報を含めてください。必要に応じてそれをより魅力的なものにします(上部にTL; DRセクションを含む)。 –

答えて

0

.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)) 
    } 
} 
関連する問題