14 Stimmen

Ausführen einer Groovy-Klasse in einem Paket von der Befehlszeile aus

Gibt es eine Möglichkeit, eine Groovy-Klasse auszuführen, indem man das Paket mit Punkten angibt, wie bei Java?

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.

17voto

Robert Munteanu Punkte 64955

Zuallererst, Paket ist ein reserviertes Schlüsselwort und kann daher nicht als Paketname verwendet werden.

Zweitens kann man das in Groovy nicht tun, da die Punktnotation für Klassen und nicht für Skripte verwendet wird, so dass man eine kompilierte Klassendatei benötigt, um sie zu verwenden.

Sie können jedoch den Befehl groovy durch java + classpath ersetzen:

java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass

Sie können einen Alias hinzufügen, z. B. 'g_java', um weniger ausführlich zu sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X