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 и т. д. это, кажется, работает.