1

理想的には JSR 223 (Java プラットフォームのスクリプト) を使用して、自動的に実行するグ​​ルーヴィーなスクリプトがあります。

@Grab 解決プロセスは、外部プロセスとして実行するときだけでなく、コンソールからも機能します。ただし、Groovy 1.8.6 の ScriptEngine を使用すると機能しません。問題は、ScriptEngine が @Grab を尊重せず、java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport が発生することです。

誰かがすでにこれを解決しましたか?

4

2 に答える 2

1

これは私のために働く:

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
于 2012-03-21T14:10:38.550 に答える