由NullPointerException引起的Java InvocationTargetException

由NullPointerException引起的Java InvocationTargetException,java,netbeans,nullpointerexception,javafx,invocationtargetexception,Java,Netbeans,Nullpointerexception,Javafx,Invocationtargetexception,我有一个源代码完全相同的程序——但自从升级到Netbeans 8和JDK 8之后,当执行“binOneDragDropped”方法(这是一个在JavaFX中分配给标签拖放的方法)时,它在这一行上给我一个由NullPointerException引起的InvocationTargetException: 方法“binonedragdroped”在FirstFitController类中,定义为: @FXML private void binOneDragDropped(DragEvent

我有一个源代码完全相同的程序——但自从升级到Netbeans 8和JDK 8之后,当执行“binOneDragDropped”方法(这是一个在JavaFX中分配给标签拖放的方法)时,它在这一行上给我一个由NullPointerException引起的InvocationTargetException:

方法“binonedragdroped”在FirstFitController类中,定义为:

@FXML
    private void binOneDragDropped(DragEvent event) {
                // Create dragboard object & FXMLController object
                Dragboard db = event.getDragboard();

                // Make sure success is set to false
                boolean success = false;

                // Declare contents array list
                ArrayList binOneContents = new ArrayList();

                if (db.hasString()) {
                    // Add number to the bin (Array List) - if bin is not full
                    if (binOneHasSpace = false) {
                        mainControllerClass.showDialog("Bin is full.");
                    } else {
                        binOneContents.add(db.getString());
                    }

                    // Go through the array list
                    for (Object s : binOneContents) {
                        binOneNewLabel += s.toString() + ", ";
                    }

                    // Update bin contents label
                    binOneContentsLabel.setText(binOneNewLabel);

                    binOneTotalValue = calculateTotalValue(binOneNewLabel);


                    // Check if bin is full and set boolean to false + change bin colour to red if it is
                    if (binOneTotalValue >= Integer.parseInt(binSize)) {
                        // Set boolean to false
                        binOneHasSpace = false;

                        // Set bin colour to red to show user it's full
                        binOne.setFill(Color.RED);
                    }

                    // Set success boolean to true
                    success = true;
                }

                // Let source know whether string drop was successful
                event.setDropCompleted(success);

                // Stop further propagation
                event.consume();
    }
“calculateTotalValue”方法只是一种方法,它将一组数字作为一个用逗号分隔的字符串(例如“1,2,3,4”),将它们分开并相加,得到一个总数

“binOneContentsLabel”只是JavaFX中的一个标签。“binOneNewLabel”是在程序开始时初始化为“”的字符串对象(不在方法本身中)

我测试了所有这些,它运行得非常好(其目的是将一个标签拖到另一个标签上,并用第二个标签替换第一个标签的内容)。但在我卸载了Netbeans并安装了JDK 8+之后,我下载了Netbeans 8并再次安装了它,项目就在那里,但一些代码被自动更改了。我使用了一个备份(在升级之前制作),从备份中复制了所有的类代码,并将其替换为Netbeans目录中项目类中的代码

任何帮助都将不胜感激
谢谢你

谢谢布莱恩!我发现由于某种原因它被设置为静态。我更改了它,现在可以正常工作。

binOneContentsLabel的声明在哪里,控制器类中的fx:id在哪里,请检查它们。确保它不是静态的。
@FXML
    private void binOneDragDropped(DragEvent event) {
                // Create dragboard object & FXMLController object
                Dragboard db = event.getDragboard();

                // Make sure success is set to false
                boolean success = false;

                // Declare contents array list
                ArrayList binOneContents = new ArrayList();

                if (db.hasString()) {
                    // Add number to the bin (Array List) - if bin is not full
                    if (binOneHasSpace = false) {
                        mainControllerClass.showDialog("Bin is full.");
                    } else {
                        binOneContents.add(db.getString());
                    }

                    // Go through the array list
                    for (Object s : binOneContents) {
                        binOneNewLabel += s.toString() + ", ";
                    }

                    // Update bin contents label
                    binOneContentsLabel.setText(binOneNewLabel);

                    binOneTotalValue = calculateTotalValue(binOneNewLabel);


                    // Check if bin is full and set boolean to false + change bin colour to red if it is
                    if (binOneTotalValue >= Integer.parseInt(binSize)) {
                        // Set boolean to false
                        binOneHasSpace = false;

                        // Set bin colour to red to show user it's full
                        binOne.setFill(Color.RED);
                    }

                    // Set success boolean to true
                    success = true;
                }

                // Let source know whether string drop was successful
                event.setDropCompleted(success);

                // Stop further propagation
                event.consume();
    }