Выполнение класса Groovy в пакете из командной строки
-
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», чтобы сделать его менее многословным.