Gå til innhold

Problemer med å lese fra Properties-fil


Anbefalte innlegg

Hei.

 

Jeg holder på med et webprosjekt, og i den forbindelse skulle jeg gjerne lest fra en Properties-fil inne fra en klassen. Det er Tomcat som brukes, og derfor ligger klassen min i webapps/ROOT/WEB-INF/classes/.

For å lese fra Properties-filen gjør jeg følgende:

File f = new File("webapps/ROOT/dings.properties");
FileInputStream fis = new FileInputStream(f);
Properties p = new Properties();
p.load(fis);

 

Dette fungerer utmerket dersom jeg gjør det fra en JSP i webapps/ROOT, men dersom jeg prøver å gjøre det samme i en av klassene, får jeg feilmeldinger.

Jeg skal prøve få tak i stack trace. Jeg har den ikke lenger siden jeg prøvde å finne alternative løsninger, men problemet oppstod på nytt i en annen sammenheng.

 

Det var i det minste noe sånt:

java.util.Properties.load(Unknown Source)

Jeg tror det fanger essensen.

 

--

Lars M.

Lenke til kommentar
Videoannonse
Annonse
Hei.

 

Jeg holder på med et webprosjekt, og i den forbindelse skulle jeg gjerne lest fra en Properties-fil inne fra en klassen. Det er Tomcat som brukes, og derfor ligger klassen min i webapps/ROOT/WEB-INF/classes/.

For å lese fra Properties-filen gjør jeg følgende:

File f = new File("webapps/ROOT/dings.properties");
FileInputStream fis = new FileInputStream(f);
Properties p = new Properties();
p.load(fis);

 

Dette fungerer utmerket dersom jeg gjør det fra en JSP i webapps/ROOT, men dersom jeg prøver å gjøre det samme i en av klassene, får jeg feilmeldinger.

Jeg skal prøve få tak i stack trace. Jeg har den ikke lenger siden jeg prøvde å finne alternative løsninger, men problemet oppstod på nytt i en annen sammenheng.

 

Det var i det minste noe sånt:

java.util.Properties.load(Unknown Source)

Jeg tror det fanger essensen.

 

--

Lars M.

5985785[/snapback]

 

Hei

 

Hadde vært fint å se hele stack tracen på denne, eller var dette hele meldingen? Kan det hende at det ligger en nullpointer litt lenger ned? Er det mulig at klassene ikke klarer å tolke pathen, men som tomcat systemet forstår og tolker for jspèn?

 

Gjerne post hvilken kode linje det skjærer seg på?

 

Vennlig hilsen

HV

Lenke til kommentar
Hei

 

Hadde vært fint å se hele stack tracen på denne, eller var dette hele meldingen? Kan det hende at det ligger en nullpointer litt lenger ned? Er det mulig at klassene ikke klarer å tolke pathen, men som tomcat systemet forstår og tolker for jspèn?

 

Gjerne post hvilken kode linje det skjærer seg på?

 

5986790[/snapback]

 

Hei,

 

Jeg kan spesifisere hvordan ting er, så gir stack trace-en litt mer mening.

Klassen User tilhører pakken team10.mail og ligger derfor i webapps/ROOT/WEB-INF/classes/team10/mail/.

JSP-en ligger i webapps/ROOT/larsm/, og filen jeg prøver å lese fra ligger i webapps/ROOT/larsm/users/.

 

Her er stack trace:

java.io.IOException: Read error
java.io.FileInputStream.readBytes(Native Method)
java.io.FileInputStream.read(Unknown Source)
java.util.Properties$LineReader.readLine(Unknown Source)
java.util.Properties.load(Unknown Source)
team10.mail.User.loadUserFile(User.java:75)
org.apache.jsp.larsm.main_jsp._jspService(org.apache.jsp.larsm.main_jsp:158)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

 

Her er linjen feilen blir rapportert på:

public boolean loadUserFile() throws IOException {

try {

  fISUser = new FileInputStream(fUser);

  fISUser.close();

  pUser.load(fISUser);

} catch (FileNotFoundException e) {

  return false;

}

return true;

}

 

fUser er da et objekt av typen File.

Konstruktøren til et objekt av FileInputStream kaster FileNotFoundException dersom filen ikke finnes, og det er ikke den typen Exception som forekommer og heller ikke på den linjen, så det skulle være naturlig å tro at klassen finner filen.

 

Edit:

Det kan være noe i det at filbanen tolkes annerledes i klassen enn i JSP-en, men da er spørsmålet hvordan jeg klarer å få klassen til å lese.

 

Edit, 2:

Jeg fikk løst det slik:

public boolean loadUserFile() throws IOException {
try {
 iSUser = new BufferedInputStream(new FileInputStream(fUser)); 
 pUser.load(iSUser);
 iSUser.close();
} catch (Exception e) {
 return false;
}
return true;
}

 

Jeg mistenker dog at noe av grunnen til feilen var noe annen kode i tillegg som jeg hadde skrevet feil siden jeg var litt trøtt. Det spiller ingen rolle nå lenger.

 

--

Lars M.

Endret av LarsM
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å
×
×
  • Opprett ny...