我有一个可以自动运行的 groovy 脚本,最好使用 JSR 223(Java 平台上的脚本)。
@Grab 解析过程正在控制台以及当我作为外部进程执行时工作。但是,它不能使用 Groovy 1.8.6 中的 ScriptEngine。问题是 ScriptEngine 不会尊重@Grab,我得到 java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport。
有人已经解决了这个问题吗?
我有一个可以自动运行的 groovy 脚本,最好使用 JSR 223(Java 平台上的脚本)。
@Grab 解析过程正在控制台以及当我作为外部进程执行时工作。但是,它不能使用 Groovy 1.8.6 中的 ScriptEngine。问题是 ScriptEngine 不会尊重@Grab,我得到 java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport。
有人已经解决了这个问题吗?
这对我有用:
GrabTestJSR233.java:
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'
在我的 build.gradle 中成功了。 葡萄在“运行时”需要常春藤才能工作