java - Gradle 看不到我的 swing 组件

标签 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);

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

最佳答案

看起来您从未将成员变量(swing 组件 paneltextField1 等)设置为任何内容,这意味着它们将是空指针 - 因此异常(exception)。我认为 IntelliJ 的库会在某个时候自动为您设置它们。

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

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

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

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

关于java - Gradle 看不到我的 swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38421577/

相关文章:

Java/Ubuntu - 在 main 之外打印在 Windows 上有效,但在 Ubuntu 14.04 上不执行任何操作

macos - IntelliJ - 新版本会覆盖吗

Grails/IntelliJ : trouble with simple groovy import?

java - 在IntelliJ中使用protobufs构建gradle时出错

java - 创建 Gradle 测试任务的副本

java - org.apache.maven.plugins :maven-war-plugin:jar:3. 0 的 POM 丢失,没有可用的依赖信息

java - 如何在一个类中使用一个接口(interface)的多个实现?

android - 如何在gradle命令行中添加参数并在build.gradle中使用它?

java - 为什么我们调用 Object.clone() 方法?

java - P & V 操作如何工作并设置信号量值?