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

StackOverflow https://stackoverflow.com/questions/919060

  •  06-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Тем не менее, вы можете заменить команду groovy на Java + путь к классам:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top