Не удалось создать компонент для "диалога" причина: Ява.ОУ.HeadlessException

после обновления gradle до версии 3.0.0-beta3 у меня есть эта ошибка, когда я пытаюсь отобразить диалоговое окно, чтобы запросить пароль ключа.

Я пытался добавить System.setProperty('java.awt.headless', 'false') но это не сработало, и я не нашел ничего нового в google ....

ошибка: (20, 1) не удалось создать компонент по причине " диалогового окна: Ява.ОУ.HeadlessException

java.ОУ.HeadlessException (сообщение об ошибке)

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
}

3 ответов


просто добавить System.setProperty('java.awt.headless', 'false') до import groovy.swing.SwingBuilder и убить gradle deamon с ./gradlew --stop

это дает вам что-то вроде этого :

apply plugin: 'com.android.application'

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

import groovy.swing.SwingBuilder

чтобы решить эту проблему, вы должны добавить эти 3 строки именно в этом порядке (другие заказы не работают)

apply plugin: 'com.android.application'

import groovy.swing.SwingBuilder

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

для меня это, наконец, сработало, когда я добавил System.setProperty('java.awt.headless', 'false') дважды:

  • сразу после импорта
  • после System.console() == null Регистрация

но тогда это происходит нормально только после System.console() == null проверка.

не забудьте ./gradlew --stop как упоминалось ранее.