【问题标题】:Gradle doesn't see my swing componentsGradle 看不到我的摆动组件
【发布时间】:2016-11-20 04:00:51
【问题描述】:

我使用 Intellij GUI Designer 为我的程序创建了一个简单的 gui。一切正常,但是当我构建 gradle jar 并尝试运行它时,我得到 NullPointerException (它创建了 Frame 但看不到组件)。我在配置 build.gradle 文件时遇到问题,所以我相信这可能是一个原因。

这里是 build.gradle

group 'ImgScrapper'
version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'




jar {
    manifest {
        sourceSets.main.java.srcDirs = ['Main/src']
        attributes 'Main-Class': 'imgscrapper.Main'
    }
}
sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile 'org.jsoup:jsoup:1.9.2'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

这是目录树

 .
 ├── build.gradle
 ├── gradle
 │   └── wrapper
 │       ├── gradle-wrapper.jar
 │       └── gradle-wrapper.properties
 ├── gradlew
 ├── gradlew.bat
 ├── Main
 │   ├── Main.iml
 │   └── src
 │       └── imgscrapper
 │           ├── Frame.form
 │           ├── Frame.java
 │           ├── GetImages.java
 │           └── Main.java
 ├── out
 │   └── production
 │       └── Main
 │           ├── com
 │           │   └── intellij
 │           │       └── uiDesigner
 │           │           └── core
 │           └── imgscrapper
 └── settings.gradle

错误信息

Exception in thread "main" java.lang.NullPointerException
        at imgscrapper.Frame.<init>(Frame.java:34)
        at imgscrapper.Main.main(Main.java:12)

Frame.java 文件

 public class Frame extends JFrame{
     private JPanel panel;
     private JTextField textField1;
     private JButton button1;
     public JScrollPane scrollPane;
     .
     .
     .

     Frame(){
         setVisible(true);
         setSize(440,290);
         setLocation(450,300);
         setTitle("imgScrapper");
       -/*-> Here's 34 line of Frame.java*/ textField1.setText("What are you looking ./r...");
         comboBox1.setSelectedIndex(1);
         comboBox2.setSelectedIndex(0);

你能帮我解决这个问题吗?谢谢

【问题讨论】:

  • 你能发布完整的例外吗?我怀疑您可能需要在依赖项中引用 intellij UI 设计器库。
  • 您能否编辑您的问题以包括:1) 完整的异常描述,以及 2) 包含导致错误的代码行的函数。
  • @wakjah 好的,做到了
  • 你在任何地方初始化 textField1 吗?像 textField1 = new JTextField(); ?

标签: java intellij-idea gradle build.gradle


【解决方案1】:

看起来你从来没有将你的成员变量(swing 组件paneltextField1 等)设置为任何东西,这意味着它们将是空指针——因此是例外。我认为 IntelliJ 的库旨在在某些时候自动为您设置它们。

我从未使用过 IntelliJ 设计器,但看起来您必须做一些事情才能将它与 Gradle 构建脚本一起使用。

首先,您必须配置 IntelliJ 以通过 Settings -> GUI Designer -> Generate GUI into Java source code 来更新您的源代码,然后在构建脚本中将 IntelliJ 表单库添加到您的依赖项中

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

此信息取自 Intellij Idea 13 UI Designer and automatic Gradle building - 但是,我无法保证其正确性,因此您必须试一试,看看会发生什么。

【讨论】:

  • 非常感谢!如果有人遇到同样的问题 - 不要忘记在添加依赖项后导入 forms_rt lib
  • 在进行源代码更改之前,我必须在 intellij 中重新运行我的项目。然后我能够进行构建并且它起作用了。
猜你喜欢
  • 2013-04-20
  • 2021-01-28
  • 2022-11-02
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2014-01-16
相关资源
最近更新 更多