首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy SwingBuilder() apple.awt.CToolkit异常

Groovy SwingBuilder() apple.awt.CToolkit异常
EN

Stack Overflow用户
提问于 2014-07-07 19:52:34
回答 2查看 627关注 0票数 8

我正在使用最新的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文件中的内容(在特定的系统中可能不存在,就像在我的系统中不存在一样)。

此外,项目必须使用内部解决方案,外部库是不允许的。

希望能在这件事上提供任何帮助。

编辑:示例代码

代码语言:javascript
复制
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();
                    })
                }
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-09-22 11:48:52

我在AndroidStudio0.8.6中也遇到了同样的问题,并通过定制的gradle安装来解决这个问题。刚刚下载了gradle 1.12并在首选项中设置了它的路径。

票数 0
EN

Stack Overflow用户

发布于 2018-05-17 06:34:03

这个问题有几年的历史了,但是下面的gradle构建文件(它基本上与操作系统相同):

代码语言:javascript
复制
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();
              })
            }
          }
      }
  }
}

执行:

代码语言:javascript
复制
~> gradle doit

在以下屏幕上的结果:

换句话说,至少对于这个版本的gradle、操作系统、java等等来说,这似乎是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24618710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档