• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot CoinsAPI

SyntaxWolf

Redstoneengineer
Registriert
26 Oktober 2017
Beiträge
46
Diamanten
250
Hallo!

Ich brauche kurz Hilfe, weil ich wieder ein Problem mit MySQL habe.

Logs:
Code:
[17:17:17] [Server thread/INFO]: [CoinsAPI] Enabling CoinsAPI v1.0.0
[17:17:17] [Server thread/WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "null"'.
[17:17:17] [Server thread/WARN]:     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[17:17:17] [Server thread/WARN]:     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[17:17:17] [Server thread/WARN]:     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[17:17:17] [Server thread/WARN]:     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.Util.getInstance(Util.java:382)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:314)
[17:17:17] [Server thread/WARN]:     at java.sql.DriverManager.getConnection(DriverManager.java:664)
[17:17:17] [Server thread/WARN]:     at java.sql.DriverManager.getConnection(DriverManager.java:247)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.sql.MySQL.connect(MySQL.java:30)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.sql.MySQL.<init>(MySQL.java:24)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.CoinsAPI.initialize(CoinsAPI.java:36)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.CoinsAPI.onEnable(CoinsAPI.java:24)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:332)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[17:17:17] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:359)
[17:17:17] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:318)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:408)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:372)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:327)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:267)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:563)
[17:17:17] [Server thread/WARN]:     at java.lang.Thread.run(Thread.java:748)
[17:17:17] [Server thread/WARN]: Caused by: java.lang.NumberFormatException: For input string: "null"
[17:17:17] [Server thread/WARN]:     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
[17:17:17] [Server thread/WARN]:     at java.lang.Integer.parseInt(Integer.java:580)
[17:17:17] [Server thread/WARN]:     at java.lang.Integer.parseInt(Integer.java:615)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.NonRegisteringDriver.port(NonRegisteringDriver.java:831)
[17:17:17] [Server thread/WARN]:     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
[17:17:17] [Server thread/WARN]:     ... 17 more
[17:17:17] [Server thread/WARN]: java.lang.NullPointerException
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.sql.MySQL.update(MySQL.java:53)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.CoinsAPI.initialize(CoinsAPI.java:38)
[17:17:17] [Server thread/WARN]:     at de.wolff.systems.minecraft.api.CoinsAPI.onEnable(CoinsAPI.java:24)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:332)
[17:17:17] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[17:17:17] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:359)
[17:17:17] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:318)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:408)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:372)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:327)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:267)
[17:17:17] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:563)
[17:17:17] [Server thread/WARN]:     at java.lang.Thread.run(Thread.java:748)

MySQL.java:
Java:
import java.sql.*;

public class MySQL {

    private String host, port, database, username, password;
    private Connection connection;

    public MySQL(String host, String port, String database, String username, String password) {
        this.host = host;
        this.port = port;
        this.database = database;
        this.username = username;
        this.password = password;
        connect();
    }

    public void connect() {
        if (!isConnected()) {
            try {
                connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true", username, password);
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void disconnect() {
        if (isConnected()) {
            try {
                connection.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    public boolean isConnected() {
        return connection != null;
    }

    public PreparedStatement update(final String qry) {
        try {
            PreparedStatement statement = connection.prepareStatement(qry);
            statement.executeUpdate();
            statement.close();
        } catch (SQLException ex) {
            connect();
            System.err.println(ex);
        }
        return null;
    }

    public ResultSet getResult(String qry) {
        ResultSet resultSet = null;
        try {
            PreparedStatement statement = connection.prepareStatement(qry);
            resultSet = statement.executeQuery();
        } catch (SQLException ex) {
            connect();
            System.err.println(ex);
        }
        return resultSet;
    }
}

Ich hoffe ihr könnt mir helfen, weil ich schon seit zwei Tagen versuche es zu beheben.

Mit freundlichen Grüßen
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Naja, der Code hat mehr als ein Problem. Vor allem schließt du die MySQL Objekte nicht konsequent was dazu führt, dass dir früher oder später die Datenbankverbindung bzw der Speicher im Javaprozess ausgeht. Wenn aber keine Verbindung besteht, solltest du eine Exception bekommen und wenn du die nicht bekommst, dann funktioniert die Verbindung. Das kannst du dir sogar mit "SHOW processlist" auf der Datenbankseite angucken: https://stackoverflow.com/questions/7432241/mysql-show-status-active-or-total-connections

Dein Errorhandling im Fehlerfall ist auch falsch und kann zum Crash der Datenbank und/oder Javaanwendung führen.

Bleibt eigentlich erstmal nur dass deine Query einen logischen Fehler enthält. Und eventuell dir mal die Warnings von deiner IDE angucken, ich bin mir eigentlich sehr sicher, dass auch Eclipse dich auf Ressourceleakage aufmerksam machen solle.

Edit: Guck dir außerdem mal das hier an: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
 
Oben