2010-04-20 17 views
12

Ciao rookie Java domanda.Come includere file di testo con Jar eseguibile

Ho un progetto Java e voglio includere un file di testo con il jar eseguibile. In questo momento il file di testo si trova nel pacchetto predefinito.

InputFlatFile currentFile = new InputFlatFile ("src/theFile.txt");

Afferro il file con quella linea come si può vedere usando src. Tuttavia questo non funziona con il jar eseguibile.

Qualcuno può comunicarmi come mantenere questo file con il jar eseguibile in modo che qualcuno che utilizza il programma possa semplicemente fare clic su una singola icona ed eseguire il programma.

Grazie!

+2

È possibile utilizzare getResourceAsStream (http://java.sun.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29). Vedi http://stackoverflow.com/questions/574809/java-load-a-resource-contained-in-a-jar tra le altre domande. –

+0

Grazie, darò un'occhiata a quello. – Jake

risposta

5

La directory di base nel file jar si trova nel classpath.

Provare InputFlatFile currentFile = new InputFlatFile ("theFile.txt");

Probabilmente si sta utilizzando un IDE e in esso è presente una cartella src che l'IDE utilizza per la base dei pacchetti. Quando si crea il file jar dall'IDE, si rimuove quindi la cartella src e la cartella radice contiene i pacchetti.

cioè in eclisse src/com.blah.blah volta file jar viene creata la struttura diventa com.blah.blah

Naturalmente assumo che InputFlatFile sta leggendo correttamente il valore.

http://www.devdaily.com/blog/post/java/read-text-file-from-jar-file

+0

Grazie, quel collegamento mi ha aiutato a capirlo! – Jake

+0

vorrei che funzionasse per me. Ho due file nella 'root' del file jar e ottengo un errore su securityProps.setProperty ("javax.net.ssl.trustStore", "CDAtruststore.jks"); L'errore è che 'il sistema non riesce a trovare il file specificato' Ma i file sono lì al livello più alto all'interno del vaso. Mi ha disorientato per ore. –

5

lo volete nel jar eseguibile? quindi di leggere il file è necessario utilizzare

getClass().getResourceAsStream() 

di leggere il file.

Mantieni il file di testo nel pacchetto da cui desideri accedervi. Il classloader lo troverà.

Ricordare anche che i nomi file in JAR sono case sensitive.

Problemi correlati