我使用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吗?感谢
答案 0 :(得分:2)
看起来你从未将你的成员变量(swing组件panel
,textField1
等)设置为任何东西,这意味着它们将是空指针 - 因此是例外。我认为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 - 但是,我无法保证其正确性,因此您必须尝试一下,看看会发生什么。