ObjectInputStream + jar

Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
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?

Code:
 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();
  }
 
G

Gast2

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

Gast2

Gast
mhm des klappt nicht...
Code:
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
Code:
    URL url = Activator.getDefault().getBundle().getResource("lib"+File.separator+"save.dat");
    InputStream inputstream = url.openStream();[
 

Wildcard

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

Gast2

Gast
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

Top Contributor
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
 
G

Gast2

Gast
Code:
    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...
 
G

Gast2

Gast
thx funktioniert aber warum???
für was gibt es dann
Code:
File.separator
 

Wildcard

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

Gast2

Gast
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
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben