hudi
hudi

Reputation: 16525

How to get output of groovy script in java

I am executing groovy script in java:

final GroovyClassLoader classLoader = new GroovyClassLoader();
Class groovy = classLoader.parseClass(new File("script.groovy"));
GroovyObject groovyObj = (GroovyObject) groovy.newInstance();
groovyObj.invokeMethod("main", null);

this main method println some information which I want to save in some variable. How can I do it ?

Upvotes: 3

Views: 1579

Answers (1)

tim_yates
tim_yates

Reputation: 171054

You would have to redirect System.out into something else..

Of course, if this is multi-threaded, you're going to hit issues

final GroovyClassLoader classLoader = new GroovyClassLoader();
Class groovy = classLoader.parseClass(new File("script.groovy"));
GroovyObject groovyObj = (GroovyObject) groovy.newInstance();

ByteArrayOutputStream buffer = new ByteArrayOutputStream() ;
PrintStream saveSystemOut = System.out ;
System.setOut( new PrintStream( buffer ) ) ;

groovyObj.invokeMethod("main", null);

System.setOut( saveSystemOut ) ; 
String output = buffer.toString().trim() ;

It's probably better (if you can) to write our scripts so they return something rather than dump to system.out

Upvotes: 3

Related Questions