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 :

Récupérer url projet


Sujet :

Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut Récupérer url projet
    Bonjour,

    Je cherche à récupérer l'url courante d'un projet en java mais cela me met un / avant le C:
    Or moi je ne veux pas du /

    Voici comment je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		   CodeSource codeSource = this.getClass().getProtectionDomain().getCodeSource();

  2. #2
    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
    Une URL a toujours un format bien précis. Si tu retires le / en début, tu aura une url invalide. Et pourquoi tu as besoin de cette url ?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Pour la passer à une classe incluse dans un jar qui est appelée dans mon application pour qu'elle puisse charger un fichier qui se trouve dans le projet.
    Normalement, une url ne commence jamais par /C:/... mais par C:/...

  4. #4
    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
    Je ne sais pas d'où tu tiens cette idée, mais les url de fichiers locaux en java ont la forme file:/path/to/file

    Ensuite, de toutes façons, ça ne devrait pas te concerner, tu n'a pas besoin de sortir le chemin de l'url pour construire un chemin vers un autre fichier, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            url = new java.net.URL(getClass().getProtectionDomain().getCodeSource().getLocation(),"blabla.txt");
    De plus, ce n'est pas comme ça que l'on accède à des ressoures d'un projet, un utilise la méthode getResource() qui permet de tenir compte de la complexité du classloader. Avec getProtectionDomain() tu pourrais avoir des surprises suivant la construction de ton projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = getClass().getResource("blabla.txt")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = getClass().getResource("/com/company/monprojet/blabla.txt")
    ou getResoureAsStream()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = getClass().getResource("blabla.txt")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = getClass().getResource("/com/company/monprojet/blabla.txt")

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Sauf si je fais un getRessource depuis ma classe qui doit appeler le fichier, elle ne le trouve pas car elle cherche dans le jar et non dans le projet dans lequel elle est appelée.

  6. #6
    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
    Ton programme ne devrait pas dépendre de fichiers se trouvant dans le projet mais en dehors du classpath. Ces fichiers n'existeront plus une fois que ton programme sera distribué.

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je récupère l'url pour ensuite la mettre dans ce bout de code qui se trouve dans le jar appelé dans l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		Properties properties = new Properties();
    		InputStream inStream = RecupererValueProperty.class.getResourceAsStream(url);
    		System.out.println("url : "+url);
    		System.out.println("InputStream : "+inStream);
    		try {
    			properties.load(inStream);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    Et ça me dit que inStream est null du coup alors que je passe bien l'url sous la forme /C:/...

  8. #8
    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
    class.getResourceAsStream ne charge QUE dans le classloader et la string à passer est le path relatif à la classe ou, si il commence par un /, relatif au classloader. A noter si tu as un doute que le classloader n'est pas limité au jar mais inclut toutes les classes / ressources de l'application.

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Là, je t'avoues que je suis un peu perdu. Je dois faire comment pour charger mon fichier qui se trouve dans mon application depuis la classe qui se trouve dans mon jar et que j'appelle dans mon application

  10. #10
    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
    Le jar et ton application ne forment qu'un seul classpath. Si tu mets le fichier dans com/company/fichier.properties tu peux le charger depuis le jar avec getClass ().getResourceAsStream("/com/company/fichier.properties")

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Le fichier n'est pas dans le jar.
    C'est une application web : le fichier est dans WEB-INF et le jar dans le lib de tomcat.

  12. #12
    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
    Soit tu transfères ton fichier dans web-inf/classes soit tu revois ton design pour que ton jar prenne une url et tu utilises dans ton application le servletcontext pour créer cette url. Dans tous les cas tu ne touches pas au protectiondomain dans une webapp.

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Mon fichier est déjà dans le dossier classes de web-inf.
    Mais en cherchant sur le net, j'ai vu que depuis une classe se trouvant dans un jar qui est appelé dans une application on ne peut pas appeler de fichier

  14. #14
    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
    Si tu peux. Web-inf/classes et web-inf/lib forment un seul classpath

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Non, le jar n'est pas dans web-inf/lib mais dans le dossier lib du serveur TOMCAT

  16. #16
    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
    Wow, pourquoi t'as été mettre un jar à cet endroit là ? Une raison particulière? Pour dire les choses simplement, les jar dans le dossier tomcat/lib n'ont pas et ne devraient pas avoir besoin d'accéder au contenu d'un webapp. Ils font des choses qui ne concernent pas les webapp.

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Car je l'utilise dans plusieurs applications

  18. #18
    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
    Ce n'est pas une raison suffisante. Si plusieurs applications l'utilisent, elles doivent l'embarquer chacune dans WEB-INF/lib. Ce qu'on met dans le tomcat/lib influence le coeur de fonctionnement de tomcat, on n'y met rien qui concerne les webapp, seulement ce qui concerne des modifications de la logique de fonctionnement de tomcat. Comme des valves par exemple.

Discussions similaires

  1. [ActiveX] récupérer URL de la page ?
    Par MechanTOurS dans le forum MFC
    Réponses: 3
    Dernier message: 25/04/2006, 22h38
  2. Récupérer URL en erreur sur 404
    Par TicTacToe dans le forum Langage
    Réponses: 6
    Dernier message: 28/02/2006, 12h58
  3. Réponses: 7
    Dernier message: 14/02/2006, 12h51
  4. Récupérer url d'une autre fenêtre contenant des frames
    Par coolhead dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2005, 10h12
  5. [Eclipse] [VSS plugin] Récupérer un projet depuis le server?
    Par Bobsinglar dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/05/2005, 17h12

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