PDA

View Full Version : [JAVA] Problema con i path all'interno del jar


franksisca
04-01-2012, 10:11
allora, ho messo all'interno della cartella src i miei vari file, ai quali devo accedere per compilare alcuni campi:

questo è il codice:

private void compilaSoci() {
{
FileReader fileReader = null;
try {
fileReader = new FileReader(new File(getClass().getResource("/src/archive/socio.txt").toURI()));
// fileReader = new FileReader(new File("src/archive/socio.txt"));
BufferedReader buffer = new BufferedReader(fileReader);
String linea = buffer.readLine();
while (linea != null) {
this.socioComboBox.addItem(linea);
linea = buffer.readLine();
}
} catch (URISyntaxException ex) {
Logger.getLogger(PannelloInserimentoAssociati.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(PannelloAggiungiServizio.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fileReader.close();
} catch (IOException ex) {
Logger.getLogger(PannelloInserimentoAssociati.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

che genera questo errore:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at view.PannelloInserimentoAssociati.compilaSoci(PannelloInserimentoAssociati.java:90)
at view.PannelloInserimentoAssociati.<init>(PannelloInserimentoAssociati.java:43)
at view.PannelloGeneraleAssociati.addAssociatoActionPerformed(PannelloGeneraleAssociati.java:174)
at view.PannelloGeneraleAssociati.access$500(PannelloGeneraleAssociati.java:26)
at view.PannelloGeneraleAssociati$6.actionPerformed(PannelloGeneraleAssociati.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

ovviametne il problema è nella creazione del filereader

nel caso in cui il codice sia quello commentato funziona senza problemi, nell'altro no. Ma ovviamente per usare l'applicazione su macchine diverse devo usare la prima soluzione, ovvero quella con path "assoluti". ora, chi mi aiuta, sò che la soluzione è davanti ai miei occhi,, ma al momento non riesco a vederla!!!

franksisca
04-01-2012, 11:06
per ora ho risolto lasciando le immagini all0interno del JAR, che con il getresource funziona senza problemi, mentre i file "archivio" che devo leggere e modificare li ho messi nello stesso path del jar. ma vorrei evitarlo per impedire manipolazioni esterne. quindi accetto consigli su come inserire gli archivi all'interno del jar e modificarli.

grazie