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).