Gå til innhold

Anbefalte innlegg

:hmm: Her er en kode bit jeg har laget. som ikke oppfører seg helt som ventet!

Kodebit 1:

public String skrivUtObject(){

Brukeradm Loginn=new Brukeradm(txt,bla,BlaURL);

try{

FileOutputStream utstrøm=new FileOutputStream("info.ser");

ObjectOutputStream ut=new ObjectOutputStream(utstrøm);

ut.writeObject(Loginn);

ut.close();

 

return "Objekt er skrevet ut";

} catch (Exception e){

return "Object ble ikke skrevet ut!!!!";

}

}

 

public String hentObject(){

try {

innstrøm=new FileInputStream("info.ser");

System.out.println("Åpner innstrøm fra info.ser...");

inn=new ObjectInputStream(innstrøm);

System.out.println("ObjectInputStream åpnet");

innlog=(Brukeradm)inn.readObject();

System.out.println("ferdig");

} catch (Exception e) { return "En feil oppsto ved innlesing av objektet:"; }

return "Objektet er lastet inn";

}

Dette ser ut til å fungere men bare hvis jeg har kjørt kodebiten som nå kommer.

 

Kodebit 2:

try{

FileOutputStream utstrøm=new FileOutputStream("info.ser");

ObjectOutputStream ut=new ObjectOutputStream(utstrøm);

ut.writeObject(Loginn);

ut.close();

System.out.println("Objekt er skrevet ut");

} catch (Exception e){

System.out.print("feil oppsto");

}

Filen blir lagret i samme mappe som programmet. og det var jo hele meningen. Problemet er at hvis jeg kjører programmet på en anne maskin vil ikke kodebit 1 fungere. men info.ser filen finnes jo i samme mappen som programmet jeg bruker.

og den eneste måten jeg for programmet til å finne objektet og all informasjonen som objektet inneholder er hvis jeg kjører kodebit 2 på nytt på den andre maskinen?????? dette er jo to forskjellige programmer som ikke har noe med hverandre å gjøre!!!!! og objektet er jo lagret på nøyaktig samme sted fra før!

må enten finne en mulighet som kan gi en fulstendig url til der programmet vil bli innstallert. UANSETT hvor C:\mappe1 D:\mappe60 osv. eller så må jeg finne en måte å kunne lese objektet som er lagret fra før.

 

Noen som har noen lure tips?????????

 

Jeg vil gjøre dere oppmerksom på at kodebiten fungerer perfekt hvis jeg oppgir fulstendig URL eller filbane. Eks "C://mappe1//mappe2//info.ser"

Lenke til kommentar
Videoannonse
Annonse

Problemet ditt er litt vagt definert, dessuten hadde det ikke gjort noe om du hadde skrevet hvilken exception du får eller "hvordan" det ikke virker. Det er mye lettere å hjelpe deg å finne hva som er galt, da.

 

Jeg antar at når du kjører programmet på en maskin B virker ikke hentObject() metoden din (den krasjer eller "En feil oppsto ved innlesing av objektet:"), selv om du har kopiert med "info.ser" fila du lagde på maskin A.

 

Jeg har ikke prøvd å kompilere med en ny versjon av java og kjøre det på en gammel, men formatet for serialisering endret seg etter versjon 1.1. Microsofts VM er vel omtrent på det nivået, så hvis maskin B ikke har oppdatert java versjon kan det være en forklaring.

 

Andre muligheter er jo at "info.ser" ikke ligger i mappa du kjører programmet fra.

 

I System klassen finnes en del properties (beskrevet i getProperties() metoden). Der har du user.home og user.dir, hvis du kan plassere "info.ser" der under installasjonen, vet du jo hvor du har den.

 

Hvis du ønsker flere ville gjetninger, beskriv nærmere hva som går galt. Hvis man har flaks forklarer exceptionen "life, the universe and everything"...

CPL

Lenke til kommentar

Jeg fant java feilen selv. java kompilatoren oppfører seg litt merkelig inni mellom, men jeg skrev om koden til følgende

public String hentObject(){

try {

String h=getClass().getResource("info.ser").toString();//her

h = h.substring(6);//her

System.out.println("url = "+h);//her

innstrøm=new FileInputStream(h);//og her

System.out.println("Åpner innstrøm fra info.ser...");

inn=new ObjectInputStream(innstrøm);

System.out.println("ObjectInputStream åpnet");

innlog=(Brukeradm)inn.readObject();

System.out.println("ferdig");

} catch (Exception e) { return "En feil oppsto ved innlesing av objektet:"; }

return "Objektet er lastet inn";

}

 

på denne måten kunne konstruktøren til FileInputStream få en fullstendig filbane uansett hvor programmet blir innstallert. Jippi :thumbs:

Lenke til kommentar
  • 2 uker senere...

Det heter "constructor" på engelsk. Oversettingen "konstruktør" er fullstendig akseptabel, og har blitt brukt konsekvent på ingeniørhøgskolen jeg går på, noe man trygt kan se på som ytterligere bekreftelse på at dette er en helt ok oversettelse.

 

Jeg tror spørsmålet heller er: hva i all verden kaller DU det? (på norsk)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...