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

Langage Java Discussion :

class loader getResourceAsStream


Sujet :

Langage Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut class loader getResourceAsStream
    Hello,

    J ai dans un jar qui est présent dans le classpath un fichier, je n arrive pas a y accéder.

    Il est présent dans le jar

    W:\\EDS-Workspaces\\OCS_1.30.2\\ocs_install\\webDomain\\wuiblock\\WUI-CDM-Module.jar

    et j aimerais la ressource

    oams-profiles\\Default\\module\\cdm\\pageflow\\clientrelationship\\MyName2.module

    Comment faire pour y accéder, es-ce possible sans passer par ArchiveURLConnection

    quelles solutions existent ?

    merci

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans un jar on utilise des / pas des \\
    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.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    J ai testé les 2 variantes sans résultat

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Est ce que ce jar est chargé (dans le classpath) ?
    Si c'est le cas, tu peux utiliser Class.getResourceAsStream mais fais à partir d'une classe dans ce jar et utilises un chemin relatif.

    Bonne chance.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    C'est ce que j ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ClassLoader loader = JarFileExplorer.class.getClassLoader();
     
    InputStream stream = loader.getResourceAsStream("WUI-CDM-Module/oams-profiles/Default/module/cdm/pageflow/clientrelationship/MyName2.module");
    et voici mon classpath

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="translation"/>
    	<classpathentry kind="src" path="page"/>
    	<classpathentry kind="src" path="module"/>
    	<classpathentry kind="lib" path="W:/EDS-Workspaces/OCS_1.30.2/ocs_install/webDomain/wuiblock/WUI-CDM-Module.jar"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Et ça a donné quoi ?
    Sinon, dansn mon post, j'ai parlé de Class.getResourceAsStream, et non pas ClassLoader ....

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    ca donne toujours null,

    j ai essayé également avec class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    		Class loader = Class.class;
    		InputStream stream = loader.getResourceAsStream("WUI-CDM-Module/oams-profiles/Default/module/cdm/pageflow/clientrelationship/MyName2.module");
    mais sans résultat non plus .. :/

  8. #8
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Non, on s'est pas compris.
    quand je parlais de chemin relatif, je voulais dire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream stream = DummyClass.class.getResourceAsStream("MyName2.module");
    où DummyClass se trouve dans le package
    "WUI-CDM-Module/oams-profiles/Default/module/cdm/pageflow/clientrelationship/" et dans le jar en question.

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    up avec ce post

    le problème est que je ne peux pas coder en dur le nom d une des classes qui fait partie de ce jar

    ca doit être dynamique ...

  10. #10
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    le problème est que je ne peux pas coder en dur le nom d une des classes qui fait partie de ce jar

    ca doit être dynamique ..
    Veux tu expliquer s'il te plaît ?

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour.


    Veux tu expliquer s'il te plaît ?
    Je ne connais pas le nom des classes qui sont à l intérieur

  12. #12
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Ok, je comprends.
    Il est cependant possible de connaitre le noms des classes à l'intérieur d'un jar du moment que ce dernier n'est en fait qu'un fichier zip tu peux donc l'ouvrir avec Winrar/winzip/etc., parcourir les packages jusqu'à trouver un fichier xxx.class que tu utiliseras ensuite pour référencer les ressources dans ce jar.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Essaies ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream stream = ClassLoader.getSystemResourceAsStream("oams-profiles/Default/module/cdm/pageflow/clientrelationship/MyName2.module");

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    ca me semble un peu lourd comme solution, je ne comprend pas pourquoi je ne peux pas accéder par le classloader en spécifiant le chemin complet du fichier

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Essaies ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream stream = ClassLoader.getSystemResourceAsStream("oams-profiles/Default/module/cdm/pageflow/clientrelationship/MyName2.module");
    testé mais sans résultat non plus

  16. #16
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Si, tu peux utiliser le CLassLoader, mais fais le plutôt de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Thread.currentThread().getContextClassLoader().getResourceAsStream(
    						"Ton chemin abslue dans le jar")));
    Bonne chance.

  17. #17
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    merci de l aide, mais ce n est pas encore ca

  18. #18
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bizarre ...
    Ce bout de code marche parfaitement pour moi, càd qu'il charge bien un fichier présent dans n'importe quel jar dans le classpath ...
    T'es sur que le chemin que tu donnes est bon ?
    Sinon, le "ça marche pas", ça veut dire quoi au juste ? quel exception to obtiens ?

  19. #19
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    oui je suis certain du path, je n ai pas d exception j ai seulement un resultat null

Discussions similaires

  1. URL nulle via class loader
    Par Nemix dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 18/06/2012, 10h14
  2. Problème JNDI et class loaders "perso"
    Par luthier dans le forum Général Java
    Réponses: 3
    Dernier message: 20/03/2009, 15h32
  3. Réponses: 5
    Dernier message: 08/01/2009, 22h08
  4. Erreur Class Loader
    Par yannick1717 dans le forum Weblogic
    Réponses: 2
    Dernier message: 23/01/2008, 15h22
  5. [Class Loader] changer le class loader par défaut
    Par Didier 69 dans le forum Langage
    Réponses: 1
    Dernier message: 17/10/2006, 14h02

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