Подтвердить что ты не робот

Intellij Idea 13 UI Designer и автоматическое здание Gradle

Я использовал Intellij UI Designer для создания форм для проекта. Все работает хорошо, когда я строю с идеей, так как он обрабатывает формы для меня, но, поскольку мы недавно переключились на использование Gradle для сборки, еще не было возможности создать исполняемый файл JAR.

Мой гугл-фу привел меня к нескольким постам, объясняющим, что для компиляции нужен скрипт ant (например, link, link2, link3, и тот, который я закончил следующим: link4)

Мой проект - многомодульная установка.

root build.gradle

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    repositories {
        mavenCentral()
    }
}

суперпроект build.gradle

apply plugin:'application'
mainClassName = "dk.OfferFileEditor.OfferFileEditorProgram"

configurations {
    antTask
}

dependencies {
    compile 'org.json:json:20140107'
    compile project(":Shared:HasOffers Api")

    //dependencies for java2c
    antTask files('../../lib/javac2-13.1.1.jar', '../../lib/asm4-all-13.1.1-idea.jar', '../../lib/forms_rt-13.1.1.jar')
    antTask group: 'org.jdom', name: 'jdom', version: '1.1'
}

task compileJava(overwrite: true, dependsOn: configurations.compile.getTaskDependencyFromProjectDependency(true, 'jar')) {
    doLast {
        println 'using java2c to compile'
        project.sourceSets.main.output.classesDir.mkdirs()
        ant.taskdef name: 'javac2', classname: 'com.intellij.ant.Javac2', classpath: configurations.antTask.asPath
        ant.javac2 srcdir: project.sourceSets.main.java.srcDirs.join(':'),
                classpath: project.sourceSets.main.compileClasspath.asPath,
                destdir: project.sourceSets.main.output.classesDir,
                source: sourceCompatibility,
                target: targetCompatibility,
                includeAntRuntime: false
    }
}

Но даже если компиляция прошла успешно, исключение Nullpointer выдается при первом обращении к одному из полей, созданных конструктором пользовательского интерфейса. Так что что-то не правильно компилируется.

Я, вероятно, пропускаю некоторые настройки, но после безуспешного вливания нескольких часов в форумы и Google, я все еще не нашел никакого решения.

4b9b3361

Ответ 1

Итак, я сделал это намного сложнее, чем нужно.

Чтобы сделать это, вам нужно изменить две вещи в своем проекте.

Настройка в IDEA 13.1.5

Настройки → GUI Designer → Создание графического интерфейса в: исходный код Java

Это делает IntelliJ IDEA добавлением 3 методов в нижнюю часть форм:

  • $$$ setupUI $$$()
  • $$$ setupUI $$$()
  • $$$ $$$ getRootComponent()

Если они отсутствуют, попробуйте перекомпилировать свой проект после изменения настройки.

Добавьте отсутствующие классы

У Intellij есть банка с именем forms_rt.jar, и я нашел свою в {IntelliJ IDEA Root}\lib. И переименовал его в " forms_rt-13.1.1.jar"

Это необходимо включить во время компиляции в ваш проект. Если вы используете Gradle, как и я, вы можете скопировать его в {project root}/lib и добавить репозиторий flatfile следующим образом:

repositories {
    mavenCentral()
    flatDir dirs: "${rootDir}/lib"
}

После этого вам нужно включить его в файл проекта Gradle:

dependencies {
    compile name: 'forms_rt', version: '13.1.1'
}

После этого должно быть возможно построить его как в IntelliJ IDEA, так и в Gradle.

Ответ 2

Библиотека forms_rt находится в mavenCentral. http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22forms_rt%22

После того, как вы настроили IntelliJ для обновления SourceCode, достаточно просто добавить библиотеку к зависимостям в build.gradle.

dependencies {
    compile 'com.intellij:forms_rt:7.0.3'
}

Ответ 3

IntelliJ IDEA 2019.1

Я обнаружил, что эта проблема все еще существует. Это хотя бы как-то задокументировано сейчас:

Если ваши действия по сборке делегированы Gradle, GUI Designer не будет генерировать исходный код Java.

Таким образом, отключив соответствующие настройки

Build, Execution, Deployment | Build Tools | Gradle | Runner | Delegate IDE build/run actions to gradle

Я смог успешно построить и запустить проект. Обратите внимание, что мне не нужны никакие другие настройки или дополнительные библиотеки из ответов выше. Я позволил Generate GUI into быть установленным в Binary class files.

Ответ 4

Идея 2019.2

Похоже, что IntelliJ изменил пользовательский интерфейс настроек при обновлении с 2019.1 до 2019.2, поскольку пункт меню , упомянутый Томом, больше не существует.
Я исправил это, установив Build and run using: в IntelliJ Idea. Я также изменил Run tests using: на IntelliJ Idea, чтобы избежать проблем во время тестирования.
Обе настройки находятся под File | Settings | Build, Execution, Deployment | Build Tools | Gradle.