Exception in thread "JavaFX Application Thread" java.lang.NullPointerException

Ich Schreibe ein Programm auf dem desktop, der nimmt ein array von COM-Ports und zeigt Sie auf dem Diagramm dynamisch. das Programm läuft ohne Fehler für eine Weile, aber dann fehlschlägt, mit der folgenden Ausnahme:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:344)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:267)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:521)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:505)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$399(QuantumToolkit.java:334)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$40/432581434.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$144(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/1963387170.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

Ausführung der Anwendung wird fortgesetzt. weiterhin gespeicherten Daten in eine text-Datei, aber das Fenster ist nicht aktiv, eine beliebige Schaltfläche außer der Schaltfläche "schließen".
wenn jemand eine Idee hat, bitte helfen.

hier ist ein code

public class FXMLController implements Initializable {

public static XYChart.Series<Number, Number> hourDataSeries;

@FXML
public Label label;
@FXML
public Label statusbar;
@FXML
public LineChart lineChart;
@FXML
public NumberAxis xAxis;
@FXML
NumberAxis yAxis;
@FXML
MenuItem close;
@FXML
MenuItem Options;
@FXML
MenuItem about;
@FXML
Button connect;
@FXML
public Label hexString;

@FXML
private void close(ActionEvent event) throws SerialPortException {
    //COMConnect.serialPort.closePort();
    System.exit(0);
}

@FXML
private void connect(ActionEvent event) {
    OpenScene openScene = new OpenScene("/SceneCOM.fxml", "Options");
}

@FXML
private void showStatistics(ActionEvent event) {
    OpenScene openScene = new OpenScene("/SceneStatistics.fxml", "Statistics");
}

@FXML
private void aboutit(ActionEvent event) {
    OpenScene openScene = new OpenScene("/SceneAbout.fxml", "About");
}

@FXML
private void getconnect(ActionEvent event) {

    if (COMConnect.b == true) {
        COMConnect.b = false;
        try {
            COMConnect.serialPort.closePort();
        } catch (SerialPortException ex) {
            Logger.getLogger(FXMLController.class.getName()).log(Level.SEVERE, null, ex);
        }
        connect.setText("Connect");
    } else {
        COMConnect.b = true;
        COMConnect.comConnect();

    }

}

@Override
public void initialize(URL url, ResourceBundle rb) {

    hourDataSeries = new XYChart.Series<Number, Number>();
    label.textProperty().bind(COMConnect.EventListener.valueProperty);
    COMConnect.connectProperty.setValue("Connect");
    connect.textProperty().bindBidirectional(COMConnect.connectProperty);
    statusbar.textProperty().bind(Typewriter.status);
    hexString.textProperty().bind(TypewriterHexString.hexStr);
    xAxis.setLabel("Time");
    xAxis.setTickUnit(1);
    xAxis.setTickLabelFormatter(new NSC());
    yAxis.setLabel("density," + superscript(" kg/m3"));

    xAxis.setForceZeroInRange(false);
    lineChart.setLegendVisible(false);
    lineChart.setCursor(Cursor.CROSSHAIR);
    lineChart.getData().add(hourDataSeries);

}

}

und hinzufügen von Daten zu LineChart aus der anderen Klasse

javafx.application.Platform.runLater(new Runnable() {
                        @Override
                        public void run() {

                            valueProperty.setValue(formatt(second) + superscript(" kg/m3"));

                            if (y > 10) {
                                hourDataSeries.getData().remove(0);

                            }
                            data = new XYChart.Data<Number, Number>(y, second);
                            data.setNode(new HoveredThresholdNode(0, second, ""));
                            hourDataSeries.getData().add(data);
                            System.out.println(hourDataSeries.getData().toString());
                            y++;
                        }
                    });
                }
Teilen Sie einige code, sonst ist das nicht möglich zu sehen, was Los ist
Das Programm empfängt die Daten vom COM-port alle 22 Sekunden. zuletzt empfangene Daten 720 mal, bevor Sie den Fehler. und dann bekam ich diese Ausnahme. Ich fürchte, dass dies ein bug in jre
Was serial-Bibliothek verwenden Sie?
jssc 2.8.0 code.google.com/p/java-simple-serial-connector
Können Sie ein Beispiel finden, zeichnen von Daten aus seriellen port in dem Buch JavaFX 8 Einleitung durch ein Beispiel.

InformationsquelleAutor sabracadabra | 2014-12-17

Schreibe einen Kommentar