Gradle没有看到我的挥杆组件

时间:2016-07-17 13:08:21

标签: java intellij-idea gradle build.gradle

我使用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);

你可以帮助mi吗?感谢

1 个答案:

答案 0 :(得分:2)

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

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

首先,您必须配置IntelliJ以通过设置 - &gt;更新源代码。 GUI Designer - &gt;生成GUI到Java源代码,然后将IntelliJ表单库添加到构建脚本中的依赖项

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

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