Подтвердить что ты не робот

Выполнить класс Groovy в пакете из командной строки

Есть ли способ выполнить класс 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

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

4b9b3361

Ответ 1

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

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

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

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

Вы можете добавить псевдоним к нему "g_java", например, чтобы сделать его менее подробным.