2016-04-05 5 views
2

У меня есть некоторые проблемы с отладкой Java-кода. У меня есть модуль Rascal, из которого я вызываю связанный Java-метод. Этот Java-метод содержит пару операторов System.err.println, как предлагается здесь: https://github.com/usethesource/rascal/wiki/Error-Reporting. Но где они показаны? Когда я выполняю код Rascal с консоли отладки Rascal и вызываю связанный метод Java, сообщения не отображаются. Я даже скрываю System.err сразу после печати, но не повезло. Что я здесь делаю неправильно?Отладка связанная Java-метод

С уважением, Нико

ответ

2

System.err трудно, потому что затмение будет скрывать, если вы не запустили Eclipse, с консоли командной строки. Поэтому вы должны использовать evaluator.getStdErr(), как предложено на https://github.com/usethesource/rascal/wiki/Error-Reporting.

Сначала расширить заголовок функции Rascal, чтобы дать доступ к контексту оценщика:

@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!"); 
    } 
}