我正在使用最新的Mac,我正在一个Gradle文件中创建一个GUI元素。我目前正在使用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();
})
}
}
}
}
}发布于 2014-09-22 11:48:52
我在AndroidStudio0.8.6中也遇到了同样的问题,并通过定制的gradle安装来解决这个问题。刚刚下载了gradle 1.12并在首选项中设置了它的路径。
发布于 2018-05-17 06:34:03
这个问题有几年的历史了,但是下面的gradle构建文件(它基本上与操作系统相同):
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等等来说,这似乎是可行的。
https://stackoverflow.com/questions/24618710
复制相似问题