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

GWT et Vaadin Java Discussion :

Problème avec java.net.url


Sujet :

GWT et Vaadin Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème avec java.net.url
    Bonjour,

    J'aimerais avoir un fichier qui est dans mon projet, en fait j'ai juste besoin de son chemin et non de son contenu.

    J'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String chemin = this.getclass.getClassLoader().getResource("Files/User" + idUser + "/test.owl").toURI().getPath();
    File fichier = new File(chemin);
    En faisant un :mais j'ai lu que GWT ne supporte pas les java.net.URL.

    Quelqu'un saurait-il m'indiquer quoi faire ?
    Y a-t-il un autre moyen d'avoir le chemin de ce fichier ?

    Merci d'avance pour votre aide.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Hou là

    Alors, pour GWT et ses URL, faut voir si ton bout de code est coté serveur ou doit être traduit par le compilateur GWT en javascript. Tu te doute bien que traduit comme tu le veux, javascript n'aura jamasi accès au contenu de classloader pour des raisons évidentes de sécurité.

    Maintenant, à supposer que ce code est destiné à un bout de code qui reste coté serveur (désolé, je ne connais pas des masses GWT), ta logique est mauvaise.

    Pour récupérer l'emplacement du fichier, à supposer que cet emplacement existe (et oui, si Files/User"+idUser+"/test.owl se trouve dans un .jar ça ne marchera pas), le code correcte est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File fichier = new File (this.getclass.getClassLoader().getResource(nomDeLaResource).toURI());
    Bien sûr, c'est destiné à être utilisé pour des ressources (tout ce qui est soit dans tes jar, soit dans le WEB-INF/classes)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    En fait, le dossier File je l'ai mis dans le src avant il était dans la racine du projet. Je l'ai changé parce qu'en faisant le war du projet, le dossier File n’était plus accessible. parce que c’était codé en dur ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String chemin = "File/User"+idUser+"/Test.owl";
    File fichier = new File(chemin);
    if (fichier.exists())
    J'ai donc changé le code en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String chemin = this.getclass.getClassLoader().getResource("Files/User"+idUser+"/test.owl").toURI().getPath();
    File fichier = new File(chemin);
     if (fichier.exist)
    Oui je te confirme que le code est au niveau serveur.

    Est-ce que l'emplacement du dossier File dans le src est le bon ou dois-je le mettre dans Web-INf/class ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Le problème, c'est surtout que c'est une très mauvaise idée d'utilise File pour manipuler les ressources de ton war. Tu devrais utiliser exclusivement les méthodes du classloader. Rien ne te garantis que ton war sera décompressé par le conteneur J2EE et donc que des fichiers existeront pour ces ressources.

    Donc ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String chemin = this.getclass.getClassLoader().getResource("Files/User"+idUser+"/test.owl").toURI().getPath();
    File fichier = new File(chemin);
     if (fichier.exist)
    Devrait se traduire en quelque chose comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InputStream is = this.getclass.getClassLoader().getResourceAsStream("Files/User"+idUser+"/test.owl");
     if (is !=null)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut No source code is available for type java.net.URISyntaxException; did you forget to inherit a required module
    En fait, j'ai pu régler le problème en faisant appel à InputStream mais des fois j'ai besoin du chemin d'un fichier pour tester si celui-ci existe ou non. S'il n'existe pas je veux le créer, comment puis-je faire (avec un chemin bien sur) ?
    J'ai toujours besoin des url (avec java.net.url) sous GWT mais comment faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    InputStream repertoire =this.getclass.getClassLoader().getResourceAsStream("Files/User"+idUser+"/Test.owl");
     
    if (repertoire ==null)
     
    File fichier = new File (this.getclass.getClassLoader().getResource("Files/User"+idUser+"/Test.owl").toURI())
    fichier.mkdirs();
    Lorsque j'utilise toURI() il ne m'affiche même pas l'application GWT et j'ai lu dans ma console Eclipse ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No source code is available for type java.net.URISyntaxException; did you forget to inherit a required module

  6. #6
    Membre actif
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Points : 255
    Points
    255
    Par défaut
    Si ce message apparait c'est que tu essaies de sérialiser une exception de type java.net.URISyntaxException.
    Un petite try...catch devrait résoudre ton problème

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par ismaas Voir le message
    S'il n'existe pas je veux le créer, comment puis-je faire (avec un chemin bien sur)
    C'est une très mauvaise idée car ce dossier et son contenu seront effacé à la première mise à jour. Si je prend le conteneur jboss, c'est même effacé à chaque redémarrage. On n'est pas censé écrire dans le répertoire de déploiement de l'application web.

    Si tu as besoin de stockage, fais le ailleurs, dans un dossier disctinct et pas dans le classpatth !!

Discussions similaires

  1. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 10h41
  2. problème avec java
    Par man_kio dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/02/2007, 22h12
  3. Réponses: 5
    Dernier message: 11/01/2007, 12h09
  4. [FTP] Problème avec fopen sur URL
    Par Biboune2008 dans le forum Langage
    Réponses: 14
    Dernier message: 22/06/2006, 17h00
  5. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54

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