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 :

Problème récupération fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Problème récupération fichier
    Bonjour,

    Alors mon problème est le suivant :

    Je développe actuellement une application Swing et je souhaite pouvoir lancer l'ouverture d'un pdf inclut dans mon jar au clic sur une icone de mon interface graphique. Tout ce passe bien quand je test directement depuis Eclipse mais quand je lance le jar exécutable créé avec Eclipse et que je clic sur l'icone ouvrant le pdf, il me sort une exception :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: The f
    ile: file:\P:\Test\test.jar!\charteutilisationreseauwifi.pdf doesn't ex
    ist.
            at java.awt.Desktop.checkFileValidation(Unknown Source)
            at java.awt.Desktop.open(Unknown Source)
            at presentation.AppliTicketWifiMainFrame.showCharteAction(AppliTicketWif
    iMainFrame.java:619)
            at presentation.AppliTicketWifiMainFrame.mouseClicked(AppliTicketWifiMai
    nFrame.java:525)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at javax.swing.JComponent.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$000(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
    ce)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
    ce)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
    ce)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Pour récupérer et ouvrir le pdf j'utilise ce code :
    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
     
    final String cheminCharte ="/charteutilisationreseauwifi.pdf";
     
    		public void showCharteAction()
    		{
    			if(Desktop.isDesktopSupported())
    			{		
    				if(Desktop.getDesktop().isSupported(Desktop.Action.OPEN))
    				{
    					File pdf = new File(getClass().getResource(cheminCharte).getFile());
    					try {
    						Desktop.getDesktop().open(pdf);
    					} catch (IOException e) {
    						JOptionPane.showMessageDialog(null,"Erreur lors de la lecture de la charte :" + e.getMessage(),"Erreur", JOptionPane.ERROR);
    					}
    				}
    			}
    		}
    Je précise que je suis allé vérifier à l'intérieur du jar et le fichier pdf y est bien présent.
    Merci d'avance pour vos réponses car j'avoue ne pas comprendre l'erreur qui peut causer cette exception.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Personne n'aurait d'idée car je ne vois vraiment pas ce qui peut causer cela ?

  3. #3
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Voici un exemple complet qui marche:

    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
    27
    28
    package test;
     
    import java.awt.Desktop;
    import java.io.File;
    import java.io.InputStream;
     
    import org.apache.commons.io.FileUtils;
     
    public class MainTest {
    	static final String cheminCharte = "/charteutilisationreseauwifi.pdf";
     
    	public static void main(String[] args) {
    		(new MainTest()).showCharteAction();
    	}
     
    	public void showCharteAction(){
    		try {
    	        InputStream resourceAsStream = getClass().getResourceAsStream(cheminCharte);
    	        File tempFile = File.createTempFile("charteutilisationreseauwifi", ".pdf");
    	        FileUtils.copyInputStreamToFile(resourceAsStream, tempFile);
    	        Desktop.getDesktop().open(tempFile);
            } catch (Exception e) {
     
    	        e.printStackTrace();
            }
     
    	}
    }
    Il faut inclure le jar apache commons-io .

    Cordialement.
    Omar MEBARKI

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonsoir,

    je ne sais pas si c'est ton code mais en voyant file:\P:\Test\test.jar\charteutilisationreseauwifi.pdf doesn't exist.

    je me dis que c'est le chemin de ton fichier qui n'est pas bon.

    pour contrôler tu peux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(pdf.exists()) System.out.println("test");]
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Suis les recommendations d'omar. Pour ouvrir avec desktop.open, il faut que le fichier existe, donc il faut commencer par le sortir de ton .jar (dans le jar ce sont des ressources, pas des fichiers!)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup pour vos réponses, cela marche avec la solution d'Omar

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

Discussions similaires

  1. Problème récupération fichier ftp
    Par leTiDevDu54 dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2012, 11h12
  2. Opendialog et problème récupération nom du fichier
    Par jeff_68 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/07/2010, 18h03
  3. Problème récupération de fichier sur free
    Par zuzuu dans le forum Outils
    Réponses: 0
    Dernier message: 04/11/2009, 18h29
  4. [Tableaux] problème récupération type de fichier
    Par Methode dans le forum Langage
    Réponses: 2
    Dernier message: 13/02/2007, 23h11
  5. problème récupération de données dans des fichiers .DAT
    Par indymontpellier dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/04/2006, 08h54

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