Eclipse IDE не позволяет мне вводить данные при запуске groovy script - PullRequest
0 голосов
/ 26 июня 2011

Я попытался запустить отличный сценарий. Но, к сожалению, скрипт не запрашивает ввод данных и исключений нулевого указателя. Пожалуйста, помогите мне, что мне нужно сделать для этого.

static startShell() {

    client = new Client()

    // TODO add Windows compatibility check
    def historyFile = new File(System.getProperty("user.home"), "kitty.history")
    historyFile.createNewFile()

    def history = new History(historyFile)
    def reader = new ConsoleReader()

    reader.setBellEnabled(false)
    reader.setUseHistory(true)
    reader.setDefaultPrompt(PROMPT)
    reader.setHistory(history)
    reader.addCompletor(new SimpleCompletor(commands as String[]))

    LOOP: while (true) {
        def input = reader?.readLine().trim()

        if (input.length() == 0)
            continue

        if (["exit", "quit"].contains(input.tokenize().get(0)))
            break LOOP

        try {
            inputHandler(input)
        }
        catch (Exception e) {
            println e.getMessage()
        }

Я тоже пробовал, заменив ридер? с читателем тоже.

Ошибка:

kitty> Caught: java.lang.NullPointerException: Cannot invoke method trim() on null object
at org.apache.kitty.CmdShell.startShell(CmdShell.groovy:100)
at org.apache.kitty.CmdShell.main(CmdShell.groovy:79)

Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Я считаю, что это связано с этим вопросом:

java.io. Поддержка консоли в Eclipse IDE

По сути, Eclipse не поддерживает Console Reader для запуска приложений - хотя я запутался в том, как Эндрю Айзенберг получил рабочий результат в Eclipse, если это так.

0 голосов
/ 28 июня 2011

Можете ли вы упростить вашу программу до того, что я могу запустить? Я попробовал что-то очень простое и смог запустить его как в командной строке, так и в Eclipse.

Вот скрипт, который я создал:

импорт jline.ConsoleReader

def reader = new ConsoleReader () LOOP: while (true) { def input = reader? .readLine (). trim ()

    if (input.length() == 0)
        continue

    if (["exit", "quit"].contains(input.tokenize().get(0)))
        break LOOP

    println "You said: " + input
}

Можете ли вы попробовать запустить это и посмотреть, работает ли это для вас?

...