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 :

Ouvrir un répertoire avec Desktop


Sujet :

Java

  1. #1
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut Ouvrir un répertoire avec Desktop
    Bonjour, petite question sur Desktop.

    J'essaie d'ouvrir un répertoire depuis mon application, sous windows, pas de problème mais sous linux une erreur est levée, savez vous pourquoi ? :

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (  Desktop.isDesktopSupported()){
    		if(Desktop.getDesktop().isSupported(Desktop.Action.OPEN)){
    			try {
    				Desktop.getDesktop().open(file);
    			} catch (IOException ex) {
    				ex.printStackTrace();
    ....
    Mon erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.io.IOException: Failed to show URI:file:/home/jose/workspace/
    	at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:75)
    	at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:43)

    Mon dossier existe bien, j'ai tous les droits dessus...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    Bonjour,

    Ne serais-ce pas Desktop.browse() qu'il faut utiliser?
    open() ne sert que pour le fichiers il me semble...

  3. #3
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    C'est la même chose, enfin je veux dire j'ai la même erreur

  4. #4
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Dans la JavaDoc on peut lire

    Avec Open :
    IOException - if the specified file has no associated editor, or the associated application fails to be launched
    Et avec Browse :
    IOException - if the user default browser is not found, or it fails to be launched, or the default handler application failed to be launched

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    Ha

    Est-ce qu'un File.listFiles() te liste correctement ton répertoire?
    Si ça ne fonctionne pas, il s'agit probablement d'une erreur dans le chemin du répertoire.

    EDIT : oui, browse était une suggestion idiote

  6. #6
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par Washmid Voir le message
    Ha

    Est-ce qu'un File.listFiles() te liste correctement ton répertoire?
    Si ça ne fonctionne pas, il s'agit probablement d'une erreur dans le chemin du répertoire.
    Oui il liste, donc aucun problème sur le lien en lui même

    Citation Envoyé par Washmid Voir le message
    EDIT : oui, browse était une suggestion idiote
    J'avais essayé avec browse avant, sans succès, donc même idée lol

    Je précise qu'au début de contrôle le File par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (file.exists() && file.isDirectory()){ ...
    Donc il existe bien et est de type répertoire ...

    Nota : en regardant ma config linux j'ai bien un programme associé au répertoire
    inode/directory=nautilus.desktop

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    J'ai plus d'idées...

    Il y a toujours la possibilité du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec(new String[] {"nautilus", uri});
    mais bon c'est franchement laid , même avec le "nautilus" en préférences.

  8. #8
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par Washmid Voir le message
    J'ai plus d'idées...

    Il y a toujours la possibilité du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec(new String[] {"nautilus", uri});
    mais bon c'est franchement laid , même avec le "nautilus" en préférences.
    En même temps je voudrai bien comprendre où est le problème :s

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Je viens d'essayer sous opensuse avec KDE en DE, bah ce n'est pas brillant. Il arrive in fine à ouvrir une fenêtre, mais pas à la bonne adresse et il essaie en mode superuser... Sans même parler du fait qu'il passe par des API dépréciées à priori...

    Donc la façon la plus propre de faire sous linux serait de procéder en utilisant les outils cross desktop issus de xdg qui seront présents dans toute distrib.
    exemple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ProcessBuilder builder = new ProcessBuilder("xdg-open","/home/sinok");
    try {
    	builder.start();
    } catch (IOException e1) {
    	// TODO Auto-generated catch block
    	e1.printStackTrace();
    }
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    Citation Envoyé par Jose.N70 Voir le message
    En même temps je voudrai bien comprendre où est le problème :s
    En effet moi aussi !
    J'ai peut-être tellement fait de .NET que dès que je tombe un problème qui semble lié à du code natif j'en finis par ne même plus chercher à comprendre

    Dans les sources on voit que cette exception est levée si la méthode JNI "gnome_url_show" retourne false... Apparemment une fonction C de même nom existe, donc on peut supposer qu'il s'agit probablement plus d'un problème au niveau d'un packet gnome qu'un problème purement java.

    Deux idées plus ou moins en l'air :
    - tournes-tu sous kde (auquel cas il manque peut-être simplement une dépendance / une version spécifique) - je sais nautilus est plus un programme gnome mais on sait jamais
    - j'ai déjà eu quelques aléas sous linux dûs à des problèmes 32 bits / 64 bits avec du code JNI. Si tu as une jvm 32 bits, peux-tu essayer la 64 bits et inversement?

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

Discussions similaires

  1. Ouvrir un fichier avec Desktop
    Par Jose.N70 dans le forum Général Java
    Réponses: 1
    Dernier message: 26/11/2012, 11h02
  2. Ouvrir un répertoire avec accent dans le path
    Par Sunny dans le forum Général Python
    Réponses: 25
    Dernier message: 12/05/2012, 19h01
  3. ouvrir un fichier avec la classe Desktop
    Par Bloodista dans le forum Général Java
    Réponses: 2
    Dernier message: 23/04/2008, 17h32
  4. [jdic]Ouvrir un fichier avec la méthode Desktop
    Par Bloodscalp dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/10/2006, 11h29
  5. ouvrir 2 frames avec un lien
    Par Slash dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 07/03/2003, 09h44

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