2012-03-21 6 views
0

私は、理想的にはJSR 223(Javaプラットフォームでのスクリプティング)を使用して自動的に実行したいと思います。@Grab注釈はJSR 223から働いています

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

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

答えて

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 
+0

問題は(アイビー依存性が欠落していた)私はクラスパスを設定していませんでしたとMavenはどちらかないということでした。 Ivyに手動で依存した後、問題は解決されました。 – Crazyjavahacking

関連する問題