Передать аргументы командной строки в скрипт Groovy - PullRequest
0 голосов
/ 21 мая 2018

У меня есть простой скрипт Groovy, подобный этому:

class Main {
    static void main(String... args) {
        args.each {
            println ${it}
        }
    }
}

Я не могу понять, как передать ему аргументы командной строки.Я на Windows и запускаю скрипт как:

Groovy myscript.groovy "arg1" "arg2"

И это приводит к ошибке:

Поймано: groovy.lang.MissingMethodException: Нет сигнатуры метода: Main $ _main_closure1. $ () Применима для типов аргументов: значения (Main $ _main_closure1 $ _closure2): [Main $ _main_closure1 $ _closure2 @ 68b32e3e] Возможные решения: is (java.lang.Object), is (java.lang.Object), any (), any (), any (groovy.lang.Closure), использование ([Ljava.lang.Object;) groovy.lang.MissingMethodException: Нет сигнатуры метода: Main $ _main_closure1. $ () Применим для типов аргументов: (Main $ _main_closure1 $ _closure2) значения: [Main $ _main_closure1 $ _closure2 @ 68b32e3e] Возможные решения: is (java.lang.Object),is (java.lang.Object), any (), any (), any (groovy.lang.Closure), использовать ([Ljava.lang.Object;) в Main $ _main_closure1.doCall (hash_text.groovy: 10) вMain.main (hash_text.groovy: 9)

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Не знаю, была ли у вас явная причина для этого, но вам не нужен явный класс в скриптах groovy.Кроме того, существует неявная коллекция args, автоматически внедряемая в ваш скрипт.

Другими словами, вставка следующего содержимого в test.groovy

println "ARGS:  $args"
println "CLASS: ${args.class}"

дает следующий результат выполнения:

~> groovy test.groovy foo bar
ARGS:  [foo, bar]
CLASS: class [Ljava.lang.String;

где распечатка класса означает, чтонеявная переменная args имеет тип String array.

0 голосов
/ 21 мая 2018

у вас просто синтаксическая ошибка.вместо

println ${it}

используйте

println it

или

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