使用Janino執行java腳本

 

<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() );

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章