<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.8</version>
</dependency>
import java.lang.reflect.InvocationTargetException;
import org.codehaus.commons.compiler.CompileException;
import org.codehaus.commons.compiler.IScriptEvaluator;
import org.codehaus.janino.ScriptEvaluator;
public class JaninoTest {
public static void main(String[] args) throws CompileException, InvocationTargetException {
// TODO Auto-generated method stub
IScriptEvaluator eva=new ScriptEvaluator ();
eva.cook("System.out.println(\"hello word\");");
eva.evaluate(null);
}
}
-------------------------------------------------------
在kettle自定義插件中使用janino,classloader爲null問題解決方法:
用step的classloader,此時類加載器實際爲org.pentaho.di.core.plugins.KettleURLClassLoader
代碼參考如下:
ClassBodyEvaluator classBodyEvaluator=new ClassBodyEvaluator();
classBodyEvaluator.setParentClassLoader(step.getClass().getClassLoader() );