IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Accéder aux resources dans un jar compilé ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut Accéder aux resources dans un jar compilé ?
    Bonjour,

    Je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInputStream fin = new FileInputStream(getClass().getResource("/projet/resources/temp.html").getFile());
    Cela marche parfaitement quand je lance le projet directement dans Eclipse mais si je le compile et lance le jar, il ne trouve pas le temp.html (ou d'ailleurs n'importe quel fichier que je cherche à lire de cette façon).
    Avez-vous une solution pour cela ?

    Cordialement,

    rXp

  2. #2
    Membre expérimenté Avatar de Mamypirate
    Homme Profil pro
    Samouraï
    Inscrit en
    Mai 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Samouraï
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 108
    Par défaut
    Le .jar ne contient pas les ressources externes !

    Ton fichier temp.html doit se trouver au chemin spécifié PAR RAPPORT à la position du jar

    Bon courage !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Citation Envoyé par Mamypirate Voir le message
    Le .jar ne contient pas les ressources externes !

    Ton fichier temp.html doit se trouver au chemin spécifié PAR RAPPORT à la position du jar

    Bon courage !
    Non mais mon temp.html est dans le package resources de mon jar.
    Donc mon temp est a l’intérieur du .jar... Comment puis-je le récupérer ?

  4. #4
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Depuis Eclipse :

    1) créer un nouveau "Source Folder" dans le projet (dans le menu du clic-droit sur le projet, depuis le package explorer par exemple), appellé "resources"
    2) y importer (clic droit sur ce nouveau répertoire, "Import...") les fichiers voulus depuis un répertoire "neutre" (= non situé dans le Javaworkspace)
    3) si on ajoute "à la main" (= depuis l'extérieur d'Eclipse) des fichiers dans le répertoire "resources", il faudra faire "Refresh" dans le projet pour que tout soit synchro.
    4) on accède auxdites ressources par un nom de forme "/"+nomFichier

    En fait Eclipse va placer à la compilation les fichiers dans [projet]/bin, ce qui permettra de faire tourner l'appli depuis Eclipse, et dans le .jar quand on exportera l'appli.

    Si c'est pas depuis Eclipse, le point 4 est d'application, avec un chemin plus long si dans le jar la ressource n'est pas à la racine

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    Depuis Eclipse :

    1) créer un nouveau "Source Folder" dans le projet (dans le menu du clic-droit sur le projet, depuis le package explorer par exemple), appellé "resources"
    2) y importer (clic droit sur ce nouveau répertoire, "Import...") les fichiers voulus depuis un répertoire "neutre" (= non situé dans le Javaworkspace)
    3) si on ajoute "à la main" (= depuis l'extérieur d'Eclipse) des fichiers dans le répertoire "resources", il faudra faire "Refresh" dans le projet pour que tout soit synchro.
    4) on accède auxdites ressources par un nom de forme "/"+nomFichier

    En fait Eclipse va placer à la compilation les fichiers dans [projet]/bin, ce qui permettra de faire tourner l'appli depuis Eclipse, et dans le .jar quand on exportera l'appli.

    Si c'est pas depuis Eclipse, le point 4 est d'application, avec un chemin plus long si dans le jar la ressource n'est pas à la racine
    Bon alors j'ai déplacés toutes mes resources du package resources et les ai placés dans un nouveau source folder.
    J'essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInputStream fin = new FileInputStream(getClass().getResource("/temp.html").getFile());
    Et il ne trouve quand même pas le fichier.
    temp.html (The system cannot find the file specified)

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il ne faut pas utiliser FileInputStream qui attend un vrai fichier uniquement (au sens du système d'exploitation).

    Il suffit d'utiliser directement getResourceAsStream() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream input = getClass().getResourceAsStream("/projet/resources/temp.html");

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Accéder aux tables dans un état
    Par rjl dans le forum IHM
    Réponses: 3
    Dernier message: 06/09/2010, 15h07
  2. Recupération une resource dans un JAR
    Par croc14 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 17/04/2007, 16h11
  3. inclure des resources dans le jar avec build-impl.xml
    Par broumbroum dans le forum NetBeans
    Réponses: 2
    Dernier message: 08/01/2007, 15h24
  4. Réponses: 3
    Dernier message: 18/07/2006, 10h32
  5. [JAR] Accéder à un fichier dans un jar
    Par Nanoua dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/07/2004, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo