[Java] Fichiers inclus dans un .jar
Nitroman_70
Messages postés
16
Statut
Membre
-
Martionhotmail -
Martionhotmail -
Bonjour,
j'ai développé une petite application Java à l'aide de NetBeans. Cette application utilise des fichiers tiers que j'avais l'habitude de placer manuellement dans le dossier du programme après la génération du .jar. J'ai ensuite trouvé le moyen d'intégrer directement ces fichiers au .jar (en les regroupant dans un dossier que j'ai ajouté à la liste des dossiers source du programme).
Mon problème est le suivant : comment utiliser ces fichiers lorsqu'ils sont directement inclus dans le .jar ? Je n'arrive pas à y faire référence dans mon programme, j'ai essayé en indiquant seulement le nom "blabla.txt" ou avec "./blabla.txt" ou bien "./programme.jar/blabla.txt", j'ai toujours une exception FileNotFound, alors que les fichiers sont bien dans le .jar.
Comment faire ?
Merci !
j'ai développé une petite application Java à l'aide de NetBeans. Cette application utilise des fichiers tiers que j'avais l'habitude de placer manuellement dans le dossier du programme après la génération du .jar. J'ai ensuite trouvé le moyen d'intégrer directement ces fichiers au .jar (en les regroupant dans un dossier que j'ai ajouté à la liste des dossiers source du programme).
Mon problème est le suivant : comment utiliser ces fichiers lorsqu'ils sont directement inclus dans le .jar ? Je n'arrive pas à y faire référence dans mon programme, j'ai essayé en indiquant seulement le nom "blabla.txt" ou avec "./blabla.txt" ou bien "./programme.jar/blabla.txt", j'ai toujours une exception FileNotFound, alors que les fichiers sont bien dans le .jar.
Comment faire ?
Merci !
A voir également:
- [Java] Fichiers inclus dans un .jar
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
Regarde ici:
http://www.cejug.org/display/~htmfilho/How+a+jar+file+application+can+access+files+in+itself
http://www.cejug.org/display/~htmfilho/How+a+jar+file+application+can+access+files+in+itself
Merci! J'ai résolu une partie de mon problème... car un autre vient de se présenter : mon programme se sert des fichiers que j'ai inclus dans le .jar pour générer de nouveau fichier qu'il enregistre habituellement dans son dossier, mais là, impossible d'enregistrer pour une raison inconnue, même en spécifiant un chemin complet.
Il s'agit d'une exception levée par la librairie Jasper Reports que j'utilise dans mon programme :
Error trying to export to file : chemin/fichier
Error trying to export to file : chemin/fichier
Salut,
Plus d'infos nécessaires (éventuellement les lignes de code) pour te répondre. Sinon tu as ici un un bout de code pour lire un fichier .jasper et générer un array de bytes (côté serveur):
Côté client, tu pourrais avoir qqch du genre:
==> ceci va créer un fichier dans le dossier %TEMP%...
hth,
++
Plus d'infos nécessaires (éventuellement les lignes de code) pour te répondre. Sinon tu as ici un un bout de code pour lire un fichier .jasper et générer un array de bytes (côté serveur):
// Generating stream of compilated file
BufferedInputStream compilatedFileStream = null;
try {
// Referring the jasper file this way, one can read it from a Jar.
compilatedFileStream = new BufferedInputStream(Class.class
.getResourceAsStream("/server/jasper/BLDetSummary.jasper")); //$NON-NLS-1$
} catch (Exception e) {
MainSrvControllerImpl.getMainLogger().error(Messages.getString("GenerateReport.cannotReadJasper"), e); //$NON-NLS-1$
}
Map parameters = new HashMap();
parameters.put("param2", testPar); //$NON-NLS-1$
ByteArrayOutputStream filledFileStream = new ByteArrayOutputStream();
JasperFillManager.fillReportToStream(compilatedFileStream, filledFileStream, parameters,
new JRBeanArrayDataSource(data));
// Generating report stream
buffer = filledFileStream.toByteArray();
ByteArrayOutputStream reportFileStream = new ByteArrayOutputStream();
switch (reportType) {
case GenericReportParams.TYPE_PDF: {
JasperExportManager.exportReportToPdfStream(new ByteArrayInputStream(buffer), reportFileStream);
break;
}
case GenericReportParams.TYPE_HTML: {
JRHtmlExporter exporterHtml = new JRHtmlExporter();
exporterHtml.setParameter(JRExporterParameter.INPUT_STREAM, new ByteArrayInputStream(buffer));
exporterHtml.setParameter(JRExporterParameter.OUTPUT_STREAM, reportFileStream);
exporterHtml.exportReport();
break;
}
...
// Generating byte [] to return
buffer = reportFileStream.toByteArray();
Côté client, tu pourrais avoir qqch du genre:
// Client side : write byte[] to disk
clientSideFile = File
.createTempFile(
"DISP_" + Messages.getString("TaskFilterDialog.print_file_name") + "_" + new SimpleDateFormat("yy-MM-dd_HH_mm_ss").format(new Date()), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new String("." + taskParams.getExtensionString())); //$NON-NLS-1$
fos = new FileOutputStream(clientSideFile);
bos = new BufferedOutputStream(fos);
bos.write(reportStream);
==> ceci va créer un fichier dans le dossier %TEMP%...
hth,
++
Bonjour tout le monde,
Il se trouve que j'ai le meme probleme moi aussi.
J'ai un fichier xml qui est incorporé dans mon éxécutable ".jar" que j'arrive à lire avec un InputSource(class.getRessourcesAsStream) avec le JDOM. Mon souci par contre est que je n'arrive pas à enregistrer les modifications dans ce meme fichier (A moins bien sur de créer un nouveau fichier à l'extérieur du jar).
Est ce que quelqun pourrait m'aider SVP !
Merci d'avance
Il se trouve que j'ai le meme probleme moi aussi.
J'ai un fichier xml qui est incorporé dans mon éxécutable ".jar" que j'arrive à lire avec un InputSource(class.getRessourcesAsStream) avec le JDOM. Mon souci par contre est que je n'arrive pas à enregistrer les modifications dans ce meme fichier (A moins bien sur de créer un nouveau fichier à l'extérieur du jar).
Est ce que quelqun pourrait m'aider SVP !
Merci d'avance
il suffit de mettre ton fichier texte dans le dossier classes lorsque vous créer votre .jar le fichier est automatiquement sauvegarder dans le ,jar pour le reutiliser il suffit de faire
InputStream is =
ClassLoader.getSystemClassLoader().getResourceAsStream("nomdufichier.txt");
BufferedReader fichier =
new BufferedReader(new InputStreamReader(is));
bien sure il existe des meilleur méthodes
InputStream is =
ClassLoader.getSystemClassLoader().getResourceAsStream("nomdufichier.txt");
BufferedReader fichier =
new BufferedReader(new InputStreamReader(is));
bien sure il existe des meilleur méthodes