bekomme ich folgende Fehlermeldung, wenn meine Anwendung starten:Nullpointer mit HikariCP
java.lang.NullPointerException
at me.MyApp.MyApp.Database.getConn(Database.java:30) ~[?:?]
at me.MyApp.MyApp.Models.MyAppModel.<init>(MyAppModel.java:18) ~[?:?]
Hier ist, wie ich habe meine Datenbank Klasse einrichten:
public class Database {
private static MyApp instance = MyApp.getInstance();
private static Config config = new Config();
private static HikariDataSource ds = new HikariDataSource();
static {
HikariConfig dbConfig = new HikariConfig();
dbConfig.setJdbcUrl("jdbc:mysql://localhost:3306/" + config.get("database.database"));
dbConfig.setUsername(config.get("database.username"));
dbConfig.setPassword(config.get("database.password"));
dbConfig.setDriverClassName("com.mysql.jdbc.Driver");
dbConfig.addDataSourceProperty("cachePrepStmts", "true");
dbConfig.addDataSourceProperty("prepStmtCacheSize", "250");
dbConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
}
public static Connection getConn() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
Und hier meine Modellklasse ist, dass Trigger der Fehler:
public class MyAppModel {
private MyApp instance = MyApp.getInstance();
private Connection connection;
public MyAppModel() {
connection = Database.getConn();
}
public void createTable() {
BukkitRunnable r = new BukkitRunnable() {
@Override
public void run() {
try {
String sql = "CREATE TABLE IF NOT EXISTS `myapp` (" +
" `id` INT NOT NULL AUTO_INCREMENT ," +
"`uuid` VARCHAR(255) NOT NULL ," +
" `join_message` VARCHAR(255) NOT NULL ," +
" `quit_message` VARCHAR(255) NOT NULL ," +
" `change_points` INT NOT NULL," +
" `last_modified` TIMESTAMP NOT NULL," +
" PRIMARY KEY (`id`)" +
")";
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
} catch(SQLException e) {
e.printStackTrace();
}
}
};
r.runTaskAsynchronously(instance);
}
}
ich denke MyAppModel Verbindung gibt null zurück, und ich bin Umgang mit dem TryCatch Umgang falsch, aber ich bin nicht ganz sicher, warum es null zurückgibt. Was mache ich falsch?
Ich verstehe das Konzept einer NullPointerException, aber nicht, warum meine Anwendung mir diesen Fehler gibt.
Können Sie mir auf die doppelte Frage zeigen? – kinx