簡體   English   中英

org.datafx.provider.PublishingTask $ 1.run上的java.lang.NullPointerException(PublishingTask.java:41)

[英]java.lang.NullPointerException at org.datafx.provider.PublishingTask$1.run(PublishingTask.java:41)

使用datafx從其余腳本讀取json。 下面是代碼

    @FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");
    label.setText("Hello World!");
    JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
    RestSource test = RestSourceBuilder.create()
                      .converter(jsonConvert)
                      .host("http://devel.com.au")
                      .path("cgi-bin").path("ssinternalweb-jcgi.sh")
                      .queryParam("Program", "appfx/CaseTest.p")
                      .queryParam("ProcName", "FXRequest")
                      .queryParam("TestParam", "aValue").build();
    ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
            .dataReader(test)
            .build();
    Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();      
    lvCases.setItems(retrieve.getValue());                                                                                      
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    lvCases.setCellFactory(l -> new CaseTableCell());
    lvCases.getItems().add(new CaseTable(999, "Loading..."));
}  

當工作人員開始處理結果時,出現以下錯誤消息

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.datafx.provider.PublishingTask$1.run(PublishingTask.java:41)
at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/1175034525.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda$46/501263526.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$141(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/96639997.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

我在類中嘗試創建的斷點似乎正在接收正確的值。 唯一的問題不在列表視圖的屏幕上顯示。

private ListView<CaseTable> lvCases;

如我的評論之一所述,應該設置結果列表,並且不會收到此錯誤消息。 這是一條不同的路線,這就是為什么思想不相關但卻是完全相同的問題。 以下是現在可以使用的更新代碼。

    @FXML
private void handleButtonAction(ActionEvent event) {
    JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
    RestSource test = RestSourceBuilder.create()
                      .converter(jsonConvert)
                      .host("http://devel.com.au")
                      .path("cgi-bin").path("ssinternalweb-jcgi.sh")
                      .queryParam("Program", "appfx/CaseTest.p")
                      .queryParam("ProcName", "FXRequest")
                      .queryParam("TestParam", "aValue").build();
    lvCases.getItems().removeAll(lvCases.getItems());
    ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
            .dataReader(test)
            .resultList(lvCases.getItems())
            .build();
    Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();                                                                                         
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    lvCases.setCellFactory(l -> new CaseTableCell());
    lvCases.getItems().add(new CaseTable(999, "Loading..."));
}   

有關更多詳細信息,請參考此

https://bitbucket.org/datafx/datafx/issue/9/npe-when-resultlist-not-specified

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM