[MySql] Kan geen verbinding met mysql maken: NullPointerExeption

Status
Niet open voor verdere reacties.

mcfreak

Gebruiker
Lid geworden
21 feb 2012
Berichten
508
Hallo,

Ik ben nu bezig met een bukkit plugin te maken voor een minecraft server,
Nu moet ik van alles opslaan (punten enz) maar het kijken of de tabellen bestaan lukt al niet...

in de main wordt er een andere class opgeroepen met dit regeltje in het onEnable event (als de plugin aangaat):
Code:
public void onEnable(){
		this.getConfig().options().copyDefaults(true);
		this.saveDefaultConfig();
		cookcraft.Sql.startup();
	}

Sql.java:
Code:
package cookcraft;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.bukkit.plugin.java.JavaPlugin;

public class Sql extends JavaPlugin{
	
    public static Main plugin;
    public static Sql sql;
    public Logger log = Logger.getLogger("Minecraft"); 
	
	public Sql(Main instance) {
		plugin = instance;
	}

	public static void startup(){
		Connection conn = null;
		java.sql.PreparedStatement verwerkspelertab = null;
		java.sql.PreparedStatement verwerkpermstab = null;
		ResultSet rs = null;
		try {
			String tabprefix = plugin.getConfig().getString("mysql.tableprefix");
		    String port = plugin.getConfig().getString("mysql.poort");
		    String database = plugin.getConfig().getString("mysql.database");
		    String host = plugin.getConfig().getString("mysql.hostname");
		    String db = "jdbc:mysql://" + host + ":" + port + "/" + database;
		    String username = plugin.getConfig().getString("mysql.gebruikersnaam");
		    String password = plugin.getConfig().getString("mysql.wachtwoord");
		    String driver = plugin.getConfig().getString("mysql.driver");
			Class.forName(driver).newInstance();
			String permtab = tabprefix + "permissies";
			String spelertab = tabprefix + "spelers";
			conn = DriverManager.getConnection(db, username, password);
			String maakspelertab = "CREATE TABLE IF NOT EXISTS " + spelertab
								   + "( `id` int(100) NOT NULL AUTO_INCREMENT," 
								   + "`naam` varchar(100) NOT NULL,"
						           + "`pp` int(100) NOT NULL DEFAULT '0',"
						    	   + " PRIMARY KEY (`id`)";
			verwerkspelertab = conn.prepareStatement(maakspelertab);
			verwerkspelertab.executeQuery();
			String maakpermstab = "CREATE TABLE IF NOT EXISTS " + permtab
								  + "( `id` int(100) NOT NULL AUTO_INCREMENT," 
								  + "`naam` varchar(100) NOT NULL,"
								  + "`permissie` varchar(100) NOT NULL"
					 			  + "`kosten` int(100) NOT NULL DEFAULT '3',"
					              + " PRIMARY KEY (`id`)";
			verwerkpermstab = conn.prepareStatement(maakpermstab);
			verwerkpermstab.executeQuery();
		} catch (Exception e) {
			plugin.log.log(Level.SEVERE, "[JellyDonatie][Fatale error] Kan geen verbinding met de database maken! " + e);
		} finally {
			try {
				if (rs != null)
					rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (verwerkspelertab != null)
					verwerkspelertab.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (verwerkpermstab != null)
					verwerkpermstab.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

Met deze code roep je een string in de database op als je je dat afvraagt:
Code:
plugin.getConfig().getString("mysql.tableprefix")

ik krijg in de console deze errorlog:

Code:
[SEVERE] Error occurred while enabling JellyDonatie v0.1 beta (Is it up to date?)
java.lang.NullPointerException
	at cookcraft.Sql.startup(Sql.java:25)
	at cookcraft.Main.onEnable(Main.java:18)
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
	at org.bukkit.craftbukkit.v1_4_6.CraftServer.loadPlugin(CraftServer.java:282)
	at org.bukkit.craftbukkit.v1_4_6.CraftServer.enablePlugins(CraftServer.java:264)
	at org.bukkit.craftbukkit.v1_4_6.CraftServer.reload(CraftServer.java:593)
	at org.bukkit.Bukkit.reload(Bukkit.java:184)
	at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23)
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
	at org.bukkit.craftbukkit.v1_4_6.CraftServer.dispatchCommand(CraftServer.java:514)
	at org.bukkit.craftbukkit.v1_4_6.CraftServer.dispatchServerCommand(CraftServer.java:506)
	at net.minecraft.server.v1_4_6.DedicatedServer.al(DedicatedServer.java:260)
	at net.minecraft.server.v1_4_6.DedicatedServer.r(DedicatedServer.java:225)
	at net.minecraft.server.v1_4_6.MinecraftServer.q(MinecraftServer.java:494)
	at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:427)
	at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
 
Laatst bewerkt:
ok, ben nu verder.

heb nu deze regel:
Code:
public Logger log = Logger.getLogger("Minecraft");
in:
Code:
public static Logger log = Logger.getLogger("Minecraft");
en:
Code:
plugin.log.log(Level.SEVERE, "[JellyDonatie][Fatale error] Kan geen verbinding met de database maken! " + e);
in:
Code:
log.info("[JelllyDonatie][Fatale error] Kan geen verbinding met de database maken! " + e);
Nu is dit de error:
Code:
[INFO] [JelllyDonatie][Fatale error] Kan geen verbinding met de database maken!java.lang.NullPointerException
 
Beste kan je volgende regels in een apparte try catch plaatsen om nadien te kunnen zien dat de fout niet bij de configuratie ligt

plugin.getConfig().getString("mysql.tableprefix");

met een juistere vermelding het is maar gissen omdat ik ook de upperclass niet zie dus vermoed ik dat het ook van die lijnen kan komen
 
niet gelukt maar heb het niet meer nodig, bedankt voor wat je gedaan hebt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan