android - 无法为 'dialog' 创建组件,原因 : java. awt.HeadlessException

标签 android gradle android-gradle-plugin

将 gradle 更新到版本 3.0.0-beta3 后,当我尝试显示一个对话框以询问 key 的密码时出现此错误。

我尝试添加 System.setProperty('java.awt.headless', 'false') 但它没有用,我在谷歌上没有发现任何新东西......

Error:(20, 1) Failed to create component for 'dialog' reason: java.awt.HeadlessException

java.awt.HeadlessException (no error message)

import groovy.swing.SwingBuilder

gradle.taskGraph.whenReady { taskGraph ->
        def storePassword = ''
        def keyPassword = ''
        if (System.console() == null) {
            new SwingBuilder().edt {
                dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) {
                    vbox {
                        label(text: "Please enter store passphrase:")
                        def input1 = passwordField()
                        label(text: "Please enter key passphrase:")
                        def input2 = passwordField()
                        button(defaultButton: true, text: 'OK', actionPerformed: {
                            storePassword = input1.password;
                            keyPassword = input2.password;
                            dispose();
                        })
                    }
                }
            }
        } else {
            storePassword = System.console().readPassword("\nPlease enter store passphrase: ")
            keyPassword = System.console().readPassword("\nPlease enter key passphrase: ")
        }

        if (storePassword.size() <= 0 || keyPassword.size() <= 0) {
            throw new InvalidUserDataException("You must enter the passwords to proceed.")
        }

        storePassword = new String(storePassword)
        keyPassword = new String(keyPassword)

        android.signingConfigs.Keys.storePassword = storePassword
        android.signingConfigs.Keys.keyPassword = keyPassword
}

最佳答案

只需在 import groovy.swing.SwingBuilder 之前添加 System.setProperty('java.awt.headless', 'false') 并使用 终止 gradle deamon ./gradlew --stop

它给你一些类似的东西:

apply plugin: 'com.android.application'

System.setProperty('java.awt.headless', 'false')

import groovy.swing.SwingBuilder

关于android - 无法为 'dialog' 创建组件,原因 : java. awt.HeadlessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45909265/

相关文章:

gradle - 如何使用 Gradle Kotlin-dsl 添加新配置

android - 如果设备同时支持 armeabi-v7a 和 arm64-v8a,是否存在 playstore 服务的情况,或者我只会从两者中获得一个架构 apk

MySQL 无法在 Jetty 上使用 utf8mb4 字符串更新记录

android - java.lang.RuntimeException : Cannot start "jarsigner" process, 请将其添加到 PATH

android - 将 .aar 文件集成到多模块 android studio 项目中

android - 安装 React Navigation 和手势处理程序后出错

android - "The most simple Android project has the following build.gradle"

android - 如何解决 AAPT2 错误?

android - 使用OpenCV在Android上进行多对象检测

java - 当按钮继续按钮不起作用时?如果我在 EditText 中有文本或制作 Toast,它应该启动新的 Activity