Eigenschaften lang.NullPointerException Lesen aus demselben Paket
Habe ich versucht, Variationen über den Pfad zu der Datei mit den Eigenschaften, aber können nicht scheinen, um es zu korrigieren.
Here's the structure:
src/
├── properties.properties
└── teln
├── ConnectMUD.java
├── IOUtil.java
└── PropertiesReader.java
und der Fehler:
run:
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 teln.PropertiesReader.getProps(PropertiesReader.java:16)
at teln.ConnectMUD.main(ConnectMUD.java:18)
und der Klasse in Frage:
package teln;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PropertiesReader {
private static final Logger LOG = Logger.getLogger(PropertiesReader.class.getName());
private static Properties props = new Properties();
public static Properties getProps() {
try {
props.load(PropertiesReader.class.getResourceAsStream("/teln/teln.properties"));
} catch (IOException ex) {
Logger.getLogger(PropertiesReader.class.getName()).log(Level.SEVERE, null, ex);
}
LOG.fine(props.toString());
return props;
}
}
Projekt ist Teln
und das Paket ist teln
(keine gute Wahl, vielleicht).
siehe auch: https://stackoverflow.com/a/8285636/262852
- Ist es
teln.properties
oderproperties.properties
? - versuchen Sie die Eigenschaften der Datei im Projekt root anstatt den src-Ordner
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code und setup passen nicht. Fragen Sie für eine
teln.properties
Datei inteln
aber Sie zeigen einproperties.properties
- Datei außerhalb vonteln
. Bitte seien Sie konsistent in Ihrer Frage.In der javadoc für
Class#getResource(String)
sagt alles.Den
ClassLoader
Blick auf das root des classpath (definieren Sie den Klassenpfad in Ihrem Netbeans-Konfiguration).Mit Netbeans setup wie
können wir davon ausgehen, dass die classpath-root
Wenn Sie wollen, um die
properties.properties
Ressource, die Sie brauchen, um es zu bekommen wie soDem Präfix
/
bedeutet, dass der Pfad relativ zum root des classpath. Wenn Sie hatte es weggelassen, wäre die Methode geschaut haben, an der Wurzel des Pakets der KlassePropertiesReader
ist.Hinweis: Wenn Sie unsicher sind, was der classpath ist, benutze Netbeans zu kompilieren, eine Jar-Datei Ihres Projekts und schauen in es.
dies funktioniert:
mit dieser Struktur:
Können Sie versuchen, anstelle
mit
teln.properties
- Datei in dem Paketteln
in der Beschreibung der Frage.