Exécuter une classe Groovy dans un paquet à partir de la ligne de commande
-
06-09-2019 - |
Question
Est-il possible d'exécuter une classe Groovy en spécifiant le paquet avec des points, comme java?
Exemple: Fichier ./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
Je me attendais à la dernière commande de travailler. J'ai essayé différentes façons de régler le classpath, en vain.
La solution
Tout d'abord, package est un mot-clé réservé, vous ne pouvez pas l'utiliser comme un nom de paquet.
Deuxièmement, vous ne pouvez pas le faire en Groovy, car la notation de points est utilisé pour les classes, et non pas pour les scripts, vous avez donc besoin d'un fichier de classe compilé pour l'utiliser.
Pourtant, vous pouvez remplacer la commande groovy avec java + classpath:
java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass
Vous pouvez ajouter un alias à ce g_java ', par exemple, pour le rendre moins bavard.