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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top