Probleme mit Properties load

Status
Nicht offen für weitere Antworten.

loadbrain

Bekanntes Mitglied
Hallo,
ich habe da eine Ausgabe, die ich nicht so recht verstehe...
ich habe folgenden Code in einer Datei:

Code:
        InputStream dbPropInputStream = null;
        
        dbPropInputStream = NewsLetterDao.class.getResourceAsStream("../resources/Configuration.properties");
        System.out.println(dbPropInputStream.toString());
        Properties p = new Properties(System.getProperties());
        
          try {
            p.load(dbPropInputStream);
        } catch (IOException ex) {
            ex.printStackTrace();
        }

Die .properties Datei wir auch geladen, ich kann mir
Code:
System.out.println(p.getProperty("test.propertie"));
den Wert anzeigen lassen.
Die Anwendung wird auch gestartet, nur kommt in der Konsole folgende Fehlermeldung:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at loadbrain.NewsLetterDao.loadDatabaseDriver(NewsLetterDao.java:85)
        at loadbrain.NewsLetterDao.<init>(NewsLetterDao.java:48)
        at loadbrain.NewsLetterDao.<init>(NewsLetterDao.java:38)
        at loadbrain.FWNewsLetterFrame.<init>(FWNewsLetterFrame.java:50)
        at loadbrain.FWNewsLetterFrame$5.run(FWNewsLetterFrame.java:235)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Was ist jetzt da das Problem? Es geht alles und trotzdem Fehler???
 
Ja, in Zeile 85:
Code:
    private void loadDatabaseDriver(String driverName)
    {
        System.out.println("driver: " +  driverName);
        // load Derby driver
        try
        {
            Class.forName(driverName);
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }
        
    }
und der String driverName ist leer.

Wenn ich aber in der Methode
Code:
    private Properties loadDBProperties()
    {
        InputStream dbPropInputStream = null;
        
        //InputStream istream = NewsLetterDao.class.getResourceAsStream("../resources/Configuration.properties");

        dbPropInputStream = NewsLetterDao.class.getResourceAsStream("../resources/Configuration.properties");
        System.out.println(dbPropInputStream.toString());
        Properties p = new Properties(System.getProperties());
        
          try {
            p.load(dbPropInputStream);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println(p.getProperty("derby.driver"));
....
mir die Property ausgeben lasse, so steht da dann:
Code:
org.apache.derby.jdbc.EmbeddedDriver
wieso kommt das in der methode loadDatabaseDriver nicht an?
 
Hey, ich habs!

In der Funktion
Code:
    private Properties loadDBProperties()
    {
...

        return dbProperties;
    }
habe ich
Code:
dbProperties = new Properties();
durch
dbProperties = new Properties(System.getProperties());
geändert, jetzt geht es...
 
Jetzt habe ich allerdings ein anderes problem von dem ich eigentlich dachte, ich blicke es... :?

Und zwar geht es jetzt aus NetBeans raus auszurufen ohne Fehlermeldung.
Das fertige JAR bringt mir allerdings wieder die gleiche...

ich rufe das ja so auf:
Code:
dbPropInputStream = NewsLetterDao.class.getResourceAsStream("../db/Configuration.properties");
was ich schon nicht ganz verstehe, da NewsLetterDao & Configuration.properties im gleichen Verzeichnis, nämlich db sind.
Schön so geht es, aber nicht als JAR.
Ich habe die Pakete db, loadbrain & resources....
Woran kann das jetzt liegen?

EDIT

Wenn ich die Datei Configuration.properties in mein loadbrain package kopiere und es dann so aufrufe
Code:
dbPropInputStream = NewsLetterDao.class.getResourceAsStream("Configuration.properties");
geht es sowohl direkt aus Netbeans wie als jar aus dem dist ordner...
Blöd, ich wollte das ja eigentlich trennen...
 
Wenn sich deine Configurationsdatei im gleichen Verzeichnis wie deine Klassen die auf diese Datei zugreifen will befindet,
nutze einfach:

Code:
dbPropInputStream = this.getClass().getResourceAsStream("Configuration.properties")
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben