Eseguire una classe Groovy in un pacchetto dalla riga di comando
-
06-09-2019 - |
Domanda
C'è un modo per eseguire una classe Groovy specificando il pacchetto con i puntini, come con Java?
Esempio: Il file ./my/package/MyClass.groovy:
package my.package
class MyClass {
static void main(String[] args) {
println "ok"
}
}
> cd my/package my/package> groovy MyClass ok > cd ../.. > groovy my/package/MyClass.groovy ok > groovy my/package/MyClass ok > groovy my.package.MyClass Caught: java.io.FileNotFoundException: my.package.MyClass
Mi aspettavo l'ultimo comando di lavorare. Ho provato vari modi di impostare il percorso di classe, senza alcun risultato.
Soluzione
Prima di tutto, pacchetto è una parola chiave riservata, quindi non è possibile utilizzarlo come un nome di un pacchetto.
In secondo luogo, non si può fare che in Groovy, dal momento che la notazione del punto viene utilizzato per le classi, non per gli script, quindi è necessario un file di classe compilato per usarlo.
Ancora, è possibile sostituire il comando Groovy con java + classpath:
java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass
È possibile aggiungere un alias ad esso 'g_java' ad esempio per renderlo meno prolissa.