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

Entrée/Sortie Java Discussion :

Ouvrir un document Word dans un jar exécutable


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 17
    Points
    17
    Par défaut Ouvrir un document Word dans un jar exécutable
    Bonjour à tous,

    J'ai développé une application Swing dans laquelle je souhaite ouvrir un document word contenu dans le jar, en cliquant sur un bouton.

    Cela marche bien en local, mais pas quand je génère le jar et que je l'exécute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {	
    	URL toto =   SearchFrame.class.getResource("documentation/application3M.doc");
     
    	File f = new File(toto.toURI());
     
    	System.out.println("Taille= " + f.length());
    	Desktop.getDesktop().open(f);
    }
    catch ( Exception  e1 ) {
    	e1.printStackTrace();
    }
    Cela me renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IllegalArgumentException: URI is not hierarchical
    HELP!

    EDIT: Apres rélfexion il est normal que ça ne marche pas, sachant que le jar est lui meme déja considéré comme un fichier, mais du coup je ne vois plus comment faire...

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Lorsque tu es dans un Jar, ton URI est du style "file:jar:/chemin_du_jar!/chemin_dans_le_jar/documentation/application3M.doc", ce qui ne correspond pas vraiment à un fichier en local (et donc inaccessible pour Word ou d'autre application).

    Il faut donc extraire ton fichier dans un fichier temporaire et ouvrir ce dernier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    	public static File getTemporaryFile(URL url, String prefix, String suffix) throws IOException {
    		// Creation du fichier temporaire dans le dossier temporaire système
    		File file = File.createTempFile(prefix, suffix);
    		// Le fichier sera automatiquement supprimé à la fin de l'application
    		file.deleteOnExit();
     
    		// Ouverture du fichier en écriture
    		OutputStream out = new FileOutputStream(file);
    		try {
    			// Ouverture de l'URL en lecture
    			InputStream in = url.openStream();
    			try {
    				// Copie par bloc de 8192 bytes :
    				byte[] buf = new byte[8192];
    				int len = 0;
    				while ( (len=in.read(buf)) >= 0 ) {
    					out.write(buf, 0, len);
    				}
    			} finally {
    				in.close();
    			}
    		} finally {
    			out.close();
    		}
    		return file;
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	URL toto =   SearchFrame.class.getResource("documentation/application3M.doc");
     
    	File f = getTemporaryFile(toto, "application3M", ".doc");
     
    	System.out.println("Taille= " + f.length());
    	Desktop.getDesktop().open(f);
    a++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 17
    Points
    17
    Par défaut
    Merci l'ami, ça marche nickel

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    bonjour,

    j'ai essayé la solution proposé ici est j'ai une question :
    SearchFrame et Desktop ce trouve dans quelle bibliotéque parce que éclipse me dit que ça n'existe pas. A moins que ce soit CaptainT qui les est créé??

    si c'est le cas je doit utiliser quoi à la place?

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ogtraba
    j'ai essayé la solution proposé ici est j'ai une question :
    SearchFrame et Desktop ce trouve dans quelle bibliotéque parce que éclipse me dit que ça n'existe pas.
    SearchFrame est bien une de ses classes... mais tu peux utiliser n'importe laquelle de tes classes à la place (la recherche via getResource() se fera en relatif par rapport à cette classe).

    Quand à Desktop, il s'agit d'une classe de Java 6. Si tu utilises un JDK plus ancien tu peux te tourner vers JDIC pour une alternative...

    a++

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    D'accord je comprend mieux maintenant. Je vais regarder JDIC merci.

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

Discussions similaires

  1. ouvrir un document Word dans une Form
    Par antoine dpt dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/05/2010, 10h36
  2. ouvrir un document word dans un formulaire
    Par idiot dans le forum IHM
    Réponses: 0
    Dernier message: 21/01/2008, 08h46
  3. Ouvrir un document Word présent sur le serveur dans une nouvelle page+enregistrement
    Par kenny49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/04/2007, 15h50
  4. Ouvrir un document word incorporer dans excel
    Par Daniel-Gérald dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/02/2007, 20h20
  5. Ouvrir un document word dans une application java
    Par serialkilled dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 02/06/2006, 18h48

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