Bukkit Plugin Problem

MrPixelDream

Grünschnabel
Hallo Community,

ich arbeite zurzeit an einem Bukkit-Plugin, welches Kommandos aus einer MySQL-Tabelle auslesen soll.
Dabei bekomme ich nun immer folgende Fehlermeldung:

Code:
18:42:35 [SEVERE] java.sql.SQLException: The url cannot be null
18:42:35 [SEVERE]       at java.sql.DriverManager.getConnection(Unknown Source)
18:42:35 [SEVERE]       at java.sql.DriverManager.getConnection(Unknown Source)
18:42:35 [SEVERE]       at de.mrpixeldream.mysqlreader.SQLConnector.connect(SQLC
onnector.java:99)
18:42:35 [SEVERE]       at de.mrpixeldream.mysqlreader.HandlerTask.run(HandlerTa
sk.java:41)
18:42:35 [SEVERE]       at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftT
ask.java:53)
18:42:35 [SEVERE]       at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainT
hreadHeartbeat(CraftScheduler.java:345)
18:42:35 [SEVERE]       at net.minecraft.server.MinecraftServer.q(MinecraftServe
r.java:510)
18:42:35 [SEVERE]       at net.minecraft.server.DedicatedServer.q(DedicatedServe
r.java:213)
18:42:35 [SEVERE]       at net.minecraft.server.MinecraftServer.p(MinecraftServe
r.java:474)
18:42:35 [SEVERE]       at net.minecraft.server.MinecraftServer.run(MinecraftSer
ver.java:406)
18:42:35 [SEVERE]       at net.minecraft.server.ThreadServerApplication.run(Sour
ceFile:539)

Auf den ersten Blick sieht es so aus, als ob ich keinen Server übergeben hätte, zu dem sich der Task verbinden soll. Dies kann aber nicht sein, da ich die Server-URL selbst übergeben habe.
Hier der Code meiner MySQL-Verbindungsklasse:

Code:
package de.mrpixeldream.mysqlreader;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class SQLConnector
{
    private boolean     isInitialized;
    private boolean     isConnected;
    private boolean     isFailed;
 
    private String      server;
    private String      user;
    private String      password;
    private String      database;
 
    private Connection  con;
    private Statement   stmt;
    private ResultSet   result;
 
    public SQLConnector()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch (ClassNotFoundException e)
        {
            // TODO Automatisch generierter Erfassungsblock
            e.printStackTrace();
        }
        
        isInitialized = false;
        isConnected = false;
        isFailed = false;
    }
 
    public SQLConnector(String server, String user, String password, String database)
    {
        isInitialized = true;
        isConnected = false;
        
        this.user = user;
        this.password = password;
        this.database = database;
 
        if (!server.startsWith("jdbc:mysql://"))
        {
            server = ( "jdbc:mysql://" + server + "/" + database);
        }
 
        try
        {
            con = DriverManager.getConnection(server, user, password);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
            if (e.getMessage().contains("denied"))
            {
                System.err.println("[MySQL-Reader] CAN'T CONNECT! WRONG USER AND/OR PASSWORD!");
                isFailed = true;
                return;
            }
            
            return;
        }
        
        try
        {
            stmt = con.createStatement();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
            System.err.println("[MySQL-Reader] AN UNKNOWN ERROR OCCURRED!");
            isFailed = true;
            return;
        }
        
        isFailed = false;
        isConnected = true;
        return;
    }
    
    public boolean connect()
    {
        if (isConnected || isFailed || !isInitialized)
        {
            return false;
        }
        else
        {
            try
            {
                con = DriverManager.getConnection(server, user, password);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
                if (e.getMessage().contains("denied"))
                {
                    System.err.println("[MySQL-Reader] CAN'T CONNECT! WRONG USER AND/OR PASSWORD!");
                    isFailed = true;
                    return false;
                }
                if (e.getMessage().contains("refused"))
                {
                    System.err.println("[MySQL-Reader] CAN'T CONNECT! SERVER NOT AVAILABLE!");
                    isFailed = true;
                    return false;
                }
                
                return false;
            }
            
            return true;
        }
    }
    
    public boolean disconnect()
    {
        if (!isConnected || isFailed || !isInitialized)
        {
            return false;
        }
        else
        {
            try
            {
                con.close();
            }
            catch (SQLException e)
            {
                e.printStackTrace();
                System.err.println("[MySQL-Reader] CAN'T CLOSE CONNECTION!");
                e.printStackTrace();
                return false;
            }
            con = null;
            
            return true;
        }
    }
    
    public void init(String server, String user, String password, String database)
    {
        isInitialized = true;
        isConnected = false;
 
        if (!server.startsWith("jdbc:mysql://"))
        {
            server = ( "jdbc:mysql://" + server );
        }
        
        this.user = user;
        this.password = password;
        this.database = database;
    }
    
    public ResultSet query(String sql_query)
    {
        if (!isInitialized || isFailed || !isConnected)
        {
            System.err.println("[MySQL-Reader] NO CONNECTION FOUND!");
            System.err.println("[MySQL-Reader] Fail: " + isFailed);
            System.err.println("[MySQL-Reader] Connection: " + isConnected);
            System.err.println("[MySQL-Reader] Init: " + isInitialized);
            return null;
        }
        
        try
        {
            stmt = con.createStatement();
        }
        catch (SQLException e1)
        {
            e1.printStackTrace();
        }
        
        try
        {
            return this.stmt.executeQuery(sql_query);
        }
        catch (SQLException e)
        {
            System.err.println("[MySQL-Reader] CAN'T EXECUTE QUERY! ERROR:");
            e.printStackTrace();
            return null;
        }
    }
}

Als Server übergebe ich "mrpixeldream.de". Auf diesem Server ist selbstverständlich ein funktionierender MySQL-Server eingerichtet! Als Passwort und User die von mir eingestellten Daten des Servers.
Hat jemand eine Idee, woran das liegen kann?

Danke schon einmal im Voraus!
 
Zurück