org jasperreports framework codehaus java groovy classpath

java - jasperreports - Al ejecutar scripts Groovy utilizando el jar de groovy-all, ¿cómo se especifica un classpath?



org codehaus groovy groovy (2)

No puede combinar tanto -jar como -cp en un comando java , por lo que debe nombrar explícitamente la clase principal. Mirando el manifiesto de la JAR groovy-all , el nombre principal de la clase es groovy.ui.GroovyMain , por lo que necesita

java -cp ''src:.:lib/*'' groovy.ui.GroovyMain src/com/example/MyScript.groovy

(Si groovy-all no estuviera ya cubierto por lib/* , necesitaría agregarlo al -cp también).

He encontrado un ejemplo para ejecutar scripts de Groovy en sistemas que no tienen instalado Groovy utilizando el archivo jar groovy-all. Intenté lo siguiente:

java -cp src:.:lib/* -jar lib/groovy-all-2.0.1.jar src/com/example/MyScript.groovy

El problema es que mi script depende de jars en el directorio lib más otros dos archivos de script de Groovy ubicados en src / com / examples. Cuando ejecuto esto, se queja de las declaraciones de importación para todos ellos. Puedo ejecutarlo en un sistema que tenga Groovy bien instalado usando lo siguiente:

CLASSPATH="src:.:lib/*" groovy src/com/example/MyScript.groovy

¿Cómo ejecuto los scripts de Groovy de esta manera, usando el tarro groovy-all, y le doy un classpath?


Una forma es compilar los archivos de Groovy en archivos "* .class". A continuación, incluya el jar del directorio $ GROOVY_HOME / incrustable y colóquelo en classpath.

Aquí hay un ejemplo minimalista (la primera línea es una copia simple de Unix, use lo que sea que funcione para usted):

$ cp /some-dir/groovy-1.8.5/embeddable/* . $ groovyc Test.groovy $ java -cp . groovy-all-1.8.5.jar Test

Para una distribución típica, usaría Ant / Maven / Gradle para construir su propio archivo jar con Groovy compilado (es decir, archivos de clase).