Properties-File von classpath lesen

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

aus der Lehre, dass man Properties-Files auch über CLASSPATH laden kann, wollte ich mal selbst testen. Dazu habe ich folgendes geschrieben:

Code:
package com.mycompany.app;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class App
{
  public static void main( String[] args ) throws IOException
  {
     final Properties properties = new Properties();
     InputStream inputStream = App.class.getResourceAsStream("foo.properties");
     
     if (inputStream == null){
       System.out.println("fehlgeschlagen");
       
     }
     
     properties.load(inputStream);
     System.out.println("erfolgreich");
  }
}

Die Idee ist hierbei, das Property-File foo.properties vom meinem Windows-Desktop aus zu laden. Ich habe die class-Datei mit folgendem ausgeführt:

Code:
java -classpath "C:/Users/RatnasKonto/Desktop" com.mycompany.app.App

Natürlich habe ich das Property-File vorher auf Desktop gelegt. Leider bekomme ich eine Exception, die Ausgabe sieht folgendermaßem aus:
Code:
fehlgeschlagen
Exception in thread "main" java.lang.NullPointerException
  at java.util.Properties$LineReader.readLine(Properties.java:434)
  at java.util.Properties.load0(Properties.java:353)
  at java.util.Properties.load(Properties.java:341)
  at com.mycompany.app.App.main(App.java:23)

Hat jemand vielleicht eine Idee?

Vielen Dank und viele Grüße aus Rheinland,

Eure Ratna
 
Also wo genau liegt denn die Properties-Datei? Liegt sie im selben Ordner wie die Klasse App? Wenn nicht, ist das wohl die Erklärung für die NPE. getResourceAsStream() benutzt den gleichen Classloader, der die Klasse App geladen hat. Wenn du einen anderen Pfad im Klassenpfad für deine Properties-Datei verwenden willst (achja, ist die Properties-Datei überhaupt im Classpath?), musst die getSystemResourceAsStream() verwenden und den absoluten Pfad im Klassenpfad zur Properties-Datei angebeben.
 
Hallo saftmeister,

danke für den Hinweis. Es lag tatsächlich daran, dass die Properties-Datei noch nicht im Classpath war. Vergessen, hihihi..

Viele Grüße aus Rheinland,
Eure Ratna
 
Zurück