2017-07-11 8 views
1

rJava出力をコンソールに抑制するにはどうすればよいですか?コンソールでrjavaエラー出力を抑制する

library(rJava) 
TC <- J("edu.cens.spatial.RTileController") 
     dummy <- capture.output(suppressWarnings(suppressMessages(
res <- TC$getInstance(type="osm-bw")$getTileValues(4389,2691,13) 
     ))) 

capture.outputにもかかわらず、私はまだ、コンソールに次のように取得する:

java.lang.NullPointerException 
    at edu.cens.spatial.RTileController.getTileValues(RTileController.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at RJavaTools.invokeMethod(RJavaTools.java:386) 

編集:(Rstudioなし)純粋なRコンソールでは、私は何もメッセージを取得していない(しかし、私はlibrary("OpenStreetMap")を呼び出す必要があります最初)。これはRstudioの問題なのかもしれません...質問は今です:Javaの出力をRstudioのRコンソールにどのように送ることができますか?下記のようにosmtileを呼び出すと可能ですか?

PS1:osm-bwではなくosmで動作します。
PS2:私は私の場合は

tile <- OpenStreetMap::osmtile(x=4389,y=2691,zoom=13,type="osm-bw") 

答えて

0

経由でこの出くわした、このような何かが作品 - にNullPointerメッセージが抑制されている:

> s <- .jcall(obj, returnSig="V", method="nullcall") 
Error in .jcall(obj, returnSig = "V", method = "nullcall") : 
    java.lang.NullPointerException: Exception 
> suppressMessages(s <- .jcall(obj, returnSig="V", method="nullcall")) 

このコードを再現するには、次の手順を実行します

  1. ファイルを作成する(R内から)

    dir.create("utils") 
    dir.create("target") 
    cat('package utils; 
    
    public class RUsingStringArray { 
        public void nullcall() throws NullPointerException { 
        throw new NullPointerException("Exception"); 
        } 
        public static void main(String [] arg) { 
        RUsingStringArray obj = new RUsingStringArray(); 
        obj.nullcall(); 
        } 
    }', file="utils/RUsingStringArray.java") 
    
  2. が(CMD /端末で、最後の行は、Windows上で動作しません)。これにより

    javac -d target utils/*.java 
    java -cp target utils/RUsingStringArray 
    Exception in thread "main" java.lang.NullPointerException: Exception 
        at utils.RUsingStringArray.nullcall(RUsingStringArray.java:19) 
        at utils.RUsingStringArray.main(RUsingStringArray.java:24) 
    export CLASSPATH=`pwd`/target 
    
  3. インサイドR

    library(rJava) 
    .jinit("C:/path_to_folder/target") # leave empty if CLASSPATH was set 
    obj <- .jnew("utils.RUsingStringArray") 
           s <- .jcall(obj, returnSig="V", method="nullcall") 
    suppressMessages(s <- .jcall(obj, returnSig="V", method="nullcall")) 
    
    Error in .jcall(obj, returnSig = "V", method = "nullcall") : 
        java.lang.NullPointerException: Exception 
    
+0

をJavaコードをコンパイルし、私はエラーを毎秒を取得します'suppressMessages'かどうかにかかわらず、私はそれを実行する時間。 –

+0

問題はありません。先に行く。 – mko

関連する問題