# File in JAR getResource().getFile()



## Me0eegah (18. Dez 2009)

Hallo Liste,

ich moechte log4j verwenden und die dazugehoerige Konfigurationsdatei im Jar file speichern

Folgende initialisierung funktioniert gut in Netbeans:


```
PropertyConfigurator.configure(Main.class.getResource("/siconversion/log4j.properties").getPath());
  //oder
  PropertyConfigurator.configure(Main.class.getResource("/siconversion/log4j.properties").getFile().toString());
  // das funktioniert in NB auch:
  PropertyConfigurator.configure(Main.class.getResource("log4j.properties").getFile().toString());
```

Wenn ich jedoch ein JAR file schnuere (via "Clean and Build" Button in Netbeans) wird die Datei nicht gefunden:


```
$ java -jar SiConversion.jar
log4j:ERROR Could not read configuration file [file:/home/xxx/tmp/SiConversion.jar!/siconversion/log4j.properties].
java.io.FileNotFoundException: file:/home/xxx/tmp/SiConversion.jar!/siconversion/log4j.properties (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:316)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
        at siconversion.Main.main(Main.java:21)
log4j:ERROR Ignoring configuration file [file:/home/xxx/tmp/SiConversion.jar!/siconversion/log4j.properties].
file:/home/xxx/tmp/SiConversion.jar!/siconversion/log4j.properties
log4j:WARN No appenders could be found for logger (siconversion.Main).
log4j:WARN Please initialize the log4j system properly.
```
 
Im Jar file finde ich die Datei:


```
$ jar -tf SiConversion.jar |grep log4j.properties
siconversion/log4j.properties
```

Hab ich etwas uebersehen?

Gruesse Me.


----------



## musiKk (18. Dez 2009)

Du kannst auf die Einträge in einem JAR nicht mit File-Objekten zugreifen. Da gehen nur Streams. Du kannst aber den Configurator auch mit einem Properties-Objekt füttern und dieses wiederum kann man aus einem InputStream oder Reader erstellen.


----------



## Me0eegah (18. Dez 2009)

Danke, das hat geholfen 

ich hab's jetzt so gemacht (das geht aber sicher auch noch eleganter).


```
Properties p = new Properties();
    p.load(Main.class.getResourceAsStream("/siconversion/log4j.properties"));
    PropertyConfigurator.configure(p);
```


----------

