Обработка аргументов программы с подключаемым модулем Groovy Eclipse v2

Мне интересно, как обрабатывать аргументы программы, когда вы используете Groovy в Eclipse. Это не так просто, как из командной строки, и мне трудно понять это. Я использую Eclipse 3.5. В моей конфигурации запуска все эти аргументы находятся в одной строке:

--classpath "${workspace_loc:/GroovyProject};${workspace_loc:/GroovyProject}" 
--main groovy.ui.GroovyMain "C:\Temp\Workspace\GroovyProject\GroovyTest.groovy " 
argtest1 
argtest2 
argtest3

Сценарий, который я использую, чтобы попытаться сделать эту работу, выглядит следующим образом:

// GroovyTest.groovy
class GroovyTest {      
  static main(args) {
    println "hello, world"
    for (arg in this.args ) {
      println "Argument:" + arg;
    }       
  } 
}

Ошибка, которую я получаю:

hello, world
Caught: groovy.lang.MissingPropertyException: No such property: args 
for class: GroovyTest at GroovyTest.main(GroovyTest.groovy:5)

person djangofan    schedule 29.09.2011    source источник


Ответы (1)


У вас есть az ненужных this в строке for (arg in this.args).

this.args означает, что у вас есть экземпляр объекта GroovyTest, и вы ссылаетесь на его поле args. В этом случае args является параметром метода, поэтому вы должны обращаться к нему просто как args.

person Csaba_H    schedule 29.09.2011
comment
Вот оно. Большое спасибо! Я скопировал пример hello world с другого сайта, поэтому не задавал вопросов. Итак, если я расширяю объект GroovyTest, то я ссылаюсь на аргументы родительского класса как на this.args, верно? - person djangofan; 30.09.2011
comment
@djangofan: Нет, ключевое слово this предназначено для ссылки на текущий объект (объект, метод которого вызывается). Ваш статический основной метод является методом класса, где его нельзя использовать. Дополнительную информацию об использовании этого раздела можно найти в download.oracle.com/javase/tutorial/java/javaOO/thiskey.html и download.oracle.com/javase/tutorial/java/javaOO/classvars.html - person Csaba_H; 01.10.2011