2016-07-17 5 views
1

Я создал простой gui для своей программы, используя Intellij GUI Designer. Все работает отлично, но когда я создаю градиентную решетку и пытаюсь запустить ее, я получаю NullPointerException (он создает Frame, но не видит компоненты). У меня возникла проблема с конфигурацией файла build.gradle, поэтому я считаю, что это может быть причиной.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 

messege Ошибка

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

Можете ли вы помочь ми с этим? Спасибо

+0

Можете ли вы опубликовать полное исключение, пожалуйста? Я подозреваю, что вам может понадобиться ссылка на библиотеку дизайнеров intellij UI в ваших зависимостях. – wakjah

+0

Не могли бы вы изменить свой вопрос, включив в него: 1) полное описание исключения и 2) функцию, содержащую строку кода, вызвавшую ошибку. – wakjah

+0

@wakjah Хорошо, сделал это – user3713267

ответ

2

Похоже, вы никогда не устанавливали свои переменные-члены (компоненты качания panel, textField1 и т. Д.) На что-либо, что означает, что они будут нулевыми указателями - отсюда исключение. Я предполагаю, что библиотека intellij предназначена для автоматической настройки для вас в какой-то момент.

Я никогда не пользовался дизайнером intellij, но похоже, что вам нужно сделать несколько вещей, чтобы использовать его с скриптом построения градиента.

Сначала вы должны настроить IntelliJ обновить исходный код через Настройки -> GUI Designer -> Generate GUI в: Java исходный код, а затем добавить библиотеку IntelliJ форм для ваших зависимостей в сценарии сборки

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

Эта информация взята из Intellij Idea 13 UI Designer and automatic Gradle building - однако я не могу ручаться за ее правильность, поэтому вам придется попробовать и посмотреть, что произойдет.

+0

Большое спасибо! Если у кого-то такая же проблема - не забудьте импортировать forms_rt lib после добавления зависимости – user3713267

+0

Мне пришлось повторно запустить мой проект в intellij, прежде чем он внес изменения источника. Тогда я смог сделать сборку, и это сработало. – Thom

Смежные вопросы