2016-04-05 4 views
2

Javaコードのデバッグに問題があります。私はリンクされたJavaメソッドを呼び出している場所からRascalモジュールを持っています。このJavaメソッドには、次のようなSystem.err.printlnステートメントが含まれています。https://github.com/usethesource/rascal/wiki/Error-Reporting しかし、どこに表示されますか?私がRascalデバッグコンソールからRascalコードを実行し、リンクされたJavaメソッドを呼び出すと、メッセージは表示されません。私はSystem.errを印刷後に直接フラッシュしますが、運はありません。私はここで間違って何をしていますか?あなたはコマンドラインコンソールからEclipseを起動しなかった場合はEclipseはそれを非表示になりますので、リンクされたJavaメソッドのデバッグ

よろしく、 ニコ

答えて

2

System.errは難しいです。したがって、https://github.com/usethesource/rascal/wiki/Error-Reportingに提案されているようにevaluator.getStdErr()を使用する必要があります。

まず評価コンテキストへのアクセスを与えるためにあなたのラスカル関数ヘッダを拡張:

@reflect{need access to stderr} 
@javaClass{path.to.MyClass} 
java int myFunction(int myParam); 

それに応じてJavaであなたのインターフェイスを変更して、エラー・ストリームへの参照を取得:

public class MyClass { 
    public IValue myFunction(IInteger myParam, IEvaluatorContext ctx) { 
     ctx.getStdErr().println("Hello Rascal!"); 
    } 
} 
関連する問題