Groovy SwingBuilder() исключение apple.awt.CToolkit

Я использую новейшую Mac OS X и создаю элемент GUI внутри файла Gradle. Я в настоящее время использую jdk1.7.0_55, и я импортировал groovy.swing.SwingBuilder, когда я запускаю проект, я получаю следующую ошибку:

java.awt.AWTError: "Инструментарий не найден: apple.awt.CToolkit

Я попытался запустить сценарий как безголовый сервер, используя System.setProperty('java.awt.headless', 'true')

Я хотел бы иметь решение, которое я могу включить непосредственно в файл проекта Gradle, вместо того, чтобы пытаться выяснить, что находится в моем accesibilities.properties файл (который может не существовать в конкретной системе, как это не существует в моей системе).

Также проект должен использовать внутреннее решение, внешние библиотеки не допускаются.

Буду очень признателен за любую помощь в этом вопросе.

Отредактировано: пример кода

gradle.taskGraph.whenReady { taskGraph ->
if(taskGraph.hasTask(':CustomApp:assembleRelease')) {

    def pass = ''
    if(System.console() == null) {
        new SwingBuilder().edt {       // Error occurs here.
            dialog(modal: true, 
                alwaysOnTop: true,
                resizable: false,
                locationRelativeTo: null,
                pack: true,
                show: true 
        )
            {
                vbox {
                    label(text: "Enter password:")
                    input = passwordField()
                    button(defaultButton: true, text: 'OK', actionPerformed: {
                        pass = input.password;
                        dispose();
                    })
                }
            }
        }
    }
}

2 ответа

Я столкнулся с той же проблемой в Android Studio 0.8.6 и решил ее с помощью специальной установки Gradle. Просто скачал gradle 1.12 и в настройках указал путь к нему.

Вопросу несколько лет, но со следующим файлом сборки Gradle (который по сути такой же, как и у OP):

import groovy.swing.SwingBuilder

task doit {}

gradle.taskGraph.whenReady { taskGraph ->
  if(taskGraph.hasTask(doit)) {
      def pass = ''
      new SwingBuilder().edt {       // Error occurs here.
          dialog(modal: true, 
                 alwaysOnTop: true,
                 resizable: false,
                 locationRelativeTo: null,
                 pack: true,
                 show: true)
          { vbox 
            { label(text: "Enter password:")
              input = passwordField()
              button(defaultButton: true, text: 'OK', actionPerformed: {
                pass = input.password;
                dispose();
              })
            }
          }
      }
  }
}

выполнение:

~> gradle doit

Результаты на следующем экране:

другими словами, по крайней мере с этой версией gradle, операционной системы, Java и т. д. это, кажется, работает.

Другие вопросы по тегам