Lukas: NullPointerException

Hi

Ich hab ein Problem mit einer NullPointerException. Den Fehler konnte ich bereits orten, jedoch weiss ich nicht, wie ich ihn beheben kann. Die Methode Constant() gibt Werte aus dem Config-File zurück, welche beim Start des Programmes von einer weiteren Methode in eine Hashtable gespeichert wurden. In der Methode DetermineDatabases() sollen also die Datenbanken ausgelesen und einer Verbindung hergestllt werden, jedoch taucht da immer eine NullPointerException auf, obwohl ich die Schleife abbreche, wenn ein Wert null ist (sh erste IF-Bedingung in der Schleife). Wie kann ich diese Exception verhindern?

Mfg
Lukas

/**
 * Gibt eine Konstante zurück
 *
 * @param Schlüssel
 */
public static String Constant(String key)
{
    if(config.containsKey(key))
    {
        return (String)config.get(key);
    }
    else
    {
        return null;
    }
}

/**
 * Ermittelt die in der Konfiguration beschriebenen Datenbanken
 * und lädt diese
 */
public void DetermineDatabases()
{
    databasePane.removeAll();
    try
    {
        for(int i = 0;true;i++)
        {
            String database = Constant("EMA_DB_PROFILE_" + i);
            String user;
            String pass;
            if(database == null)
            {
                break;
            }
            user = Constant("EMA_DB_PROFILE_" + i + "_USER");
            if(user == null)
            {
                user = Constant("EMA_DB_DEF_USER");
                pass = Constant("EMA_DB_DEF_PASS");
            }
            else
            {
                pass = Constant("EMA_DB_PROFILE_" + i + "_PASS");
                if(pass == null)
                {
                    pass = "";
                }
            }
            MySqlDatabase db = new MySqlDatabase(database,user,pass);
            databasePane.addTab(database,db.GetTab());
            itemDatabaseCreateTable.setEnabled(true);
            itemDatabaseDropTable.setEnabled(true);
            itemDatabaseRenameTable.setEnabled(true);
            itemDatabaseManageRights.setEnabled(true);
            itemEmaSql.setEnabled(true);
            databaseList.put(String.valueOf(i),db);
        }
    }
    catch(Exception exc)
    {
        System.out.println("Main.DetermineDatabases()");
        System.out.println(exc.toString() + "\r\n");
    }
}

  1. Hi Lukas,

    schau Dir den Trace der exception an (Das was auf der Konsole rausgenudelt wird). In welcher Zeile tritt sie denn auf (sollte drin stehen). Schau Dir dort die Anweisung an, falls Du einen Debugger verwendest geh Schrittweise an die Stelle, schau Dir die Variablen und Objekte an. Alternativ kannst Du mit System.out.println() Variablen auf der Konsole ausgeben, dann siehst Du welche null ist.

    Gruss

    Marko