' Application start方法中的异常,java.lang.reflect.InvocationTargetException'从Derby数据库读取然后在JavaFX中的表中显示

时间:2017-12-28 13:39:37

标签: exception javafx derby

JavaFX中的第一个我< m
我已经建立了项目然后我设置了#34;运行文件" (Loader文件)检查它是否将Derby数据库中的值显示到表中,但是我得到了这个错误输出:

`init:
 Deleting: /home/isam/NetBeansProjects/Library Assistant/build/built- jar.properties
deps-jar:
Updating property file: /home/isam/NetBeansProjects/Library Assistant/build/built-jar.properties
Compiling 1 source file to /home/isam/NetBeansProjects/Library Assistant/build/classes

compile-single:
run-single:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: javafx.fxml.LoadException: 
file:/home/isam/NetBeansProjects/Library%20Assistant/dist/Library%20Assistant.jar!/library/assistant/ui/MemberList/member_list.fxml

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
at library.assistant.ui.MemberList.member_list_Loader.start(member_list_Loader.java:23)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)
... 1 more
Caused by: java.lang.NullPointerException
at library.assistant.ui.MemberList.Member_listController.loadData(Member_listController.java:71)
at library.assistant.ui.MemberList.Member_listController.initialize(Member_listController.java:55)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
... 17 more
Exception running application library.assistant.ui.MemberList.member_list_Loader
/home/isam/NetBeansProjects/Library Assistant/nbproject/build-impl.xml:1079: The following error occurred while executing this line:
/home/isam/NetBeansProjects/Library Assistant/nbproject/build-impl.xml:833: Java returned: 1
BUILD FAILED (total time: 1 second)

FXML文件:member_list.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.net.URL?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" fx:id="root" prefHeight="400.0" prefWidth="600.0" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="library.assistant.ui.MemberList.Member_listController">
   <stylesheets>
    <URL value="@member_list.css" />
</stylesheets>
   <children>
  <TableView fx:id="memberTable" prefHeight="400.0" prefWidth="600.0">
     <columns>
         <TableColumn fx:id="idColm" prefWidth="103.0" text="ID" />
         <TableColumn fx:id="nameColm" prefWidth="103.0" text="Nome" />
         <TableColumn fx:id="lastnameColm" prefWidth="107.0" text="Prénom" />
         <TableColumn fx:id="num_inscrptColm" prefWidth="128.0" text="N°inscrpt" />
         <TableColumn fx:id="spcialtyColm" prefWidth="158.0" text="Spécialité" />
       </columns>
      </TableView>
   </children>
</AnchorPane>

member_list_Loader.java

package library.assistant.ui.MemberList;

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;


public class member_list_Loader extends Application {

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("member_list.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}


public static void main(String[] args) {
    launch(args);
}

}

Member_listController.java

package library.assistant.ui.MemberList;

import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import library.assistant.database.DatabaseHandler;
import library.assistant.ui.addBook.FXMLDocumentController;


public class Member_listController implements Initializable {

@FXML
 private TableView<Member> memberTable;
@FXML
private TableColumn<Member,String> idColm;
@FXML
private TableColumn<Member,String> nameColm;
@FXML
private TableColumn<Member,String> lastnameColm;
@FXML
private TableColumn<Member,String> num_inscrptColm;
@FXML
private TableColumn<Member,String> spcialtyColm;
// TableView<Book> table = new TableView();

 DatabaseHandler handler;
ObservableList<Member> list = FXCollections.observableArrayList();



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

    intCol();
    loadData();

}    

private void intCol() {
    nameColm.setCellValueFactory(new PropertyValueFactory<>("name"));
    idColm.setCellValueFactory(new PropertyValueFactory<>("id"));
    lastnameColm.setCellValueFactory(new PropertyValueFactory<>("lastname"));
    num_inscrptColm.setCellValueFactory(new PropertyValueFactory<>("num_inscrpt"));
    spcialtyColm.setCellValueFactory(new PropertyValueFactory<>("specialty"));
}

private void loadData(){

    String query = "SELECT * FROM MEMBRES";
    ResultSet rs = handler.execQuery(query);

    try {
        while(rs.next()){
            String id = rs.getString("id");
            String name = rs.getString("name");
            String lastname = rs.getString("lastname");
            String num_inscrpt = rs.getString("num_inscreption");
            String specialty = rs.getString("specialty");

            list.add(new Member(id, name, lastname, num_inscrpt, specialty));
        }
    } catch (SQLException ex) {
        Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
    }

    memberTable.getItems().setAll(list);

}

public static class Member{

    private final SimpleStringProperty id;
    private final SimpleStringProperty name;
    private final SimpleStringProperty lastname;
    private final SimpleStringProperty num_inscrpt;
    private final SimpleStringProperty specialty;

    public Member( String id, String name, String lastname, String num_inscrpt , String specialty) {
        this.id = new SimpleStringProperty(id);
        this.name = new SimpleStringProperty(name);
        this.lastname = new SimpleStringProperty(lastname);
        this.num_inscrpt = new SimpleStringProperty(num_inscrpt);
        this.specialty = new SimpleStringProperty(specialty);
    }

    public String getId() {
        return id.get();
    }

    public String getName() {
        return name.get();
    }

    public String getLastname() {
        return lastname.get();
    }

    public String getNum_inscrpt() {
        return num_inscrpt.get();
    }

    public String getSpecialty() {
        return specialty.get();

    }

}
}

我尝试从fx:controller删除FXML file然后我构建并运行loader file所以我将表窗口清空(没有来自数据库的值)所以我认为问题在于调用{来自Controller的{​​1}},,如果是这样,我可以如何从FXML拨打Controller,或**如果存在与来自{{1}的呼叫相关的解决方案它它更好,因为我从youtube获取此代码,编码器没有问题。
但如果还有其他问题,请随意描述我真正关心的解决方案 我在NetBeans IDE 8.2,Fedora Linux 26中运行它,如果这相关。

0 个答案:

没有答案