Выполнить класс Groovy в пакете из командной строки - PullRequest
13 голосов
/ 28 мая 2009

Есть ли способ выполнить класс Groovy, указав пакет с точками, как с Java?

Пример: файл ./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

Я ожидал, что последняя команда сработает. Я пробовал разные способы установки classpath, но безрезультатно.

1 Ответ

15 голосов
/ 28 мая 2009

Прежде всего, package является зарезервированным ключевым словом, поэтому его нельзя использовать в качестве имени пакета.

Во-вторых, вы не можете сделать это в Groovy, так как точечная нотация используется для классов, а не для скриптов, поэтому вам нужен скомпилированный файл классов для его использования.

Тем не менее, вы можете заменить команду groovy на java + classpath:

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

Например, вы можете добавить псевдоним 'g_java', чтобы сделать его менее многословным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...