Führen Sie eine Groovy-Klasse in einem Paket über die Befehlszeile aus
-
06-09-2019 - |
Frage
Gibt es eine Möglichkeit, eine Groovy-Klasse auszuführen, indem das Paket wie bei Java mit Punkten angegeben wird?
Beispiel:Datei ./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
Ich hatte erwartet, dass der letzte Befehl funktioniert.Ich habe verschiedene Möglichkeiten zum Festlegen des Klassenpfads ausprobiert, ohne Erfolg.
Lösung
Erstens, Paket ist ein reserviertes Schlüsselwort und kann daher nicht als Paketname verwendet werden.
Zweitens ist das in Groovy nicht möglich, da die Punktnotation für Klassen und nicht für Skripte verwendet wird und Sie daher eine kompilierte Klassendatei benötigen, um sie zu verwenden.
Dennoch können Sie den groovy-Befehl durch Java + Classpath ersetzen:
java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass
Sie können ihm beispielsweise einen Alias „g_java“ hinzufügen, um ihn weniger ausführlich zu gestalten.