Groovy @从JSR223抓取注释
我有一个groovy脚本,可以自动运行,理想情况下使用JSR223(Java平台上的脚本) @Grab-resolve进程在控制台中工作,当我将其作为外部进程执行时也是如此。但是,使用Groovy 1.8.6中的ScriptEngine无法工作。问题是ScriptEngine不尊重@Grab,我得到了java.lang.ClassNotFoundException:org.apache.ivy.core.report.ResolveReport 有人已经解决了这个问题吗?这对我很有用: GrabTestJSR233.java:Groovy @从JSR223抓取注释,groovy,scriptengine,Groovy,Scriptengine,我有一个groovy脚本,可以自动运行,理想情况下使用JSR223(Java平台上的脚本) @Grab-resolve进程在控制台中工作,当我将其作为外部进程执行时也是如此。但是,使用Groovy 1.8.6中的ScriptEngine无法工作。问题是ScriptEngine不尊重@Grab,我得到了java.lang.ClassNotFoundException:org.apache.ivy.core.report.ResolveReport 有人已经解决了这个问题吗?这对我很有用: Grab
import javax.script.ScriptEngine ;
import javax.script.ScriptEngineManager ;
public class GrabTestJSR223 {
public static void main( String[] args ) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager() ;
ScriptEngine engine = factory.getEngineByName( "groovy" ) ;
String script = "@Grab( 'commons-lang:commons-lang:2.6' )\n" +
"import org.apache.commons.lang.StringUtils\n"+
"\n" +
"println StringUtils.join( 'a', 'b', 'c' )" ;
engine.eval( script ) ;
}
}
编译时使用:
javac GrabTestJSR223.java
然后,运行以下命令:
java -cp $GROOVY_HOME/lib/*:. GrabTestJSR223
我得到了输出:
abc
tyvm。。。
添加
编译组:“org.codehaus.groovy”,名称:“groovy all”,版本:“3.0.1”
编译组:“org.apache.ivy”,名称:“ivy”,版本:“2.5.0”
在我的身材中,格拉德尔做到了ivy在“运行时”需要Grapes才能工作问题是我没有设置类路径,Maven也没有(缺少ivy依赖项)。人工依赖常春藤后,问题就解决了。