# Problem mit Class.getResource() in einer Jar-Datei



## comp89 (5. Jan 2005)

hi
ich habe ein Problem mit diesem Code


```
try{
                        StringBuffer buffer = new StringBuffer();
                        BufferedReader in = new BufferedReader(new FileReader(new File(Kalender.class.getResource("history.dat").toURI())));
                        for (String b;(b = in.readLine()) != null;buffer.append(b + System.getProperty ("line.separator", "\r\n")));
                        in.close();
                        hist.setText(buffer.toString());
                        tab.addTab("Version History", hist);
                    }
                    catch(Exception exc){
                        JOptionPane.showMessageDialog(null, exc);
                    }
```

Solange ich das ganze in BlueJ ausführe, funktioniert es, wenn es in der JAR-Datei ist, wird mir in JoptionPane




> java.lang.IllegalArgumentException : URI is not hierarchical



ausgegeben, das nötige File ist in der JAR - Datei vorhanden und URI wird benötigt, weil Class.getResource eine URL zurückgibt, aber new File(URI) nur eine URI nimmt, deswegen URL.toURI()

also wie mach ich das damit es auch in der JAR-Datei funktioniert
danke


----------



## Bleiglanz (5. Jan 2005)

geht so nicht

mit getResource kriegst du doch einen InputStream, daraus macht man doch kein File, sondern gleichen einen Reader?


----------



## comp89 (5. Jan 2005)

nein gibt eine url
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getResource(java.lang.String)

und so lang es nicht in der jar-datei ist, funktioniert es


----------



## Bleiglanz (5. Jan 2005)

sorry, ich dachte an

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)


----------



## comp89 (5. Jan 2005)

toll  :applaus: 
damit hat es jetzt geklappt, ich hab die methode nur vorher nicht verwendet, weil ich noch nie mit inputstreams gearbeitet hab, nur reader
danke bleiglanz


----------

