Выполнить класс 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
Я ожидал, что последняя команда будет работать. Я пробовал различные способы настройки класса, безрезультатно.
Ответы
Ответ 1
Прежде всего, это зарезервированное ключевое слово, поэтому вы не можете использовать его как имя пакета.
Во-вторых, вы не можете сделать это в Groovy, так как точечная нотация используется для классов, а не для скриптов, поэтому вам нужен файл скомпилированного класса для его использования.
Тем не менее, вы можете заменить команду groovy на java + classpath:
java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass
Вы можете добавить псевдоним к нему "g_java", например, чтобы сделать его менее подробным.