# ObjectInputStream  + jar



## Gast2 (19. Aug 2008)

Hallo,

wenn ich meine anwendung aus eclipse heraus starte klappt alles wunderbar doch sobald ich mit meine RCP anwendung mit dem eclipse wizard bauen lass und die .exe ausführe findet er die datei nicht. Wenn ich aber in mein plugin jar hineinschaue ist sie auf den fall da.
aufbau
jar
 -lib
  -save.dat

Jemand eine Idee?


```
public void load() throws IOException, ClassNotFoundException
  {
    InputStream stream = this.getClass().getClassLoader().getResourceAsStream("lib"+File.separator+"save.dat");
    if(stream == null)
      {

        spieler= new Hashtable<String, Object>();
        return;
      }

    input = new ObjectInputStream  (this.getClass().getClassLoader().getResourceAsStream("lib"+File.separator+"save.dat"));
    spieler = (Hashtable<String, Object>)input.readObject();
  }
```


----------



## Wildcard (19. Aug 2008)

Resourcen das Plugins lädt man über das Plugin Bundle (Activator#getBundle() )


----------



## Gast2 (19. Aug 2008)

okaaaay des kapital hab ich wohl überlesen... 
thx versuch ich nachher gleich aus...


----------



## Gast2 (19. Aug 2008)

mhm des klappt nicht...

```
URL url = Activator.getDefault().getBundle().getResource("lib"+File.separator+"save.dat");
fileSave = new File(url.getFile());
```

edit so klappts aus eclipse heraus beim export leider nicht mehr

```
URL url = Activator.getDefault().getBundle().getResource("lib"+File.separator+"save.dat");
    InputStream inputstream = url.openStream();[
```


----------



## Wildcard (20. Aug 2008)

Hast du 'lib' auch in deinen build properties zum binary build hinzugefügt (also gibt es im fertigen jar ein 'build')?


----------



## Gast2 (20. Aug 2008)

ja hab ich hinzugefügt...

es gibt auch in meinem jar 
den ordner lib mit der der entsprechenden datei...

wenn ich die exe starte bekomm ich immer eine NPE angezeigt in den oben genannten zeilen...


----------



## Wildcard (20. Aug 2008)

mit getResource bekommst du AFAIR nur die Resourcen die auch im Classpath liegen. Ist das bei dir der Fall?
Wenn nein, verwende entweder getEntry oder findEntries


----------



## Gast2 (21. Aug 2008)

```
URL url = Activator.getDefault().getBundle().getEntry("lib"+File.separator+"save.dat");
    InputStream s = url.openStream();
    ObjectInputStream  input = new ObjectInputStream (s);
```

klappt leider auch nicht aus eclipse heraus wieder kein problem...


----------



## Wildcard (21. Aug 2008)

"lib/save.dat"


----------



## Gast2 (21. Aug 2008)

thx funktioniert aber warum???
für was gibt es dann

```
File.separator
```


----------



## Wildcard (21. Aug 2008)

Um den Platform File Separator  zu bekommen. Da soll aber eine URL übergeben werden und kein plattformspezifischer Pfad.


----------



## Gast2 (21. Aug 2008)

mhm da stand halt als übergabe String path...
und der String sieht ja wenn ich es auf windows ausführe eigentlich ja gleich aus...
darum wunder ich mich ein bischen


----------

