Hej, nie mogę dojść dlaczego wyskakuje mi błąd w metodzie getDao(). Macie pomysł jak to naprawić?
Poniżej kod błędu.
CreateConnectionSource
InitCreateConnectionSource
getDao
2021-12-10 2257,639 [DEBUG] DaoManager created dao for class class pl.praca.inzynierska.database.model.Company with reflection
GetDaoError
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.NullPointerException
at praca.inzynierska/pl.praca.inzynierska.database.dao.CommonDao.getDao(CommonDao.java:104)
at praca.inzynierska/pl.praca.inzynierska.database.dao.CommonDao.findById(CommonDao.java:75)
at praca.inzynierska/pl.praca.inzynierska.app.App.main(App.java:25)
... 11 more
Exception running application pl.praca.inzynierska.app.App
Ustawiłem w metodach komunikaty aby mieć pewność co i kiedy się wywołuje.
Wysyłam również metody z których korzystam.
// Klasa DbManager
public static void initDatabase(){
createConnectionSource();
System.out.println("InitCreateConnectionSource");
closeConnectionSource();
System.out.println("InitCloseConnectionSource");
}
// Klasa DbManager
private static void createConnectionSource(){
try {
connectionSource = new JdbcConnectionSource(DB_URL, DBUser.ADMIN_LOGIN, DBUser.ADMIN_PASSWORD);
System.out.println("CreateConnectionSource");
} catch (SQLException e) {
System.out.println("Nie utworzono połaczenia");
LOGGER.warn(e.getMessage());
}
}
// Klasa DbManager
public static void closeConnectionSource(){
if(connectionSource!=null){
try {
connectionSource.close();
} catch (IOException e) {
LOGGER.warn(e.getMessage());
}
}
}
// Klasa CommonDao
public <T extends BaseModel, I> Dao<T, I> getDao(Class<T> cls) throws ApplicationException {
try {
System.out.println("getDao");
return DaoManager.createDao(connectionSource, cls);
} catch (SQLException e) {
System.out.println("GetDaoError");
LOGGER.warn(e.getCause().getMessage());
throw new ApplicationException("Error");
} finally {
this.closeDbConnection();
}
}
// Klasa Main
public static void main(String[] args) throws SQLException, IOException, ApplicationException {
launch(args);
CommonDao commonDao = new CommonDao();
Industry byId = commonDao.findById(Industry.class, 1);
System.out.println(byId);
}
@Override
public void start(Stage stage) throws Exception {
Pane mainPane = PaneUtils.fxmlLoader(MAIN_PANE_FXML);
Scene scene = new Scene(mainPane);
stage.setScene(scene);
stage.setTitle("Praca dyplomowa");
stage.show();
DbManager.initDatabase();
}
Z góry dzięki za pomoc.