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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top