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 :

chargeur de classe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut chargeur de classe
    Bonjour,

    Je voudrais pouvoir charger une classe au runtime (drivers jdbc), pour cela j'ai créé un chargeur de classe qui étend URLClassLoader, puis pouvoir utiliser cette classe avec mon DataSource qui lui est chargé par le system class loader. Le DataSource utilise Class.forName(ma.classe.chargée.Driver), donc cela ne fonctionne pas. Est ce que si je charge le DataSource avec mon URLClassLoader cela va fonctionné. Si non quelles seraient d'autres alternatives ?

    Merci de l'aide.

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Pourquoi as tu besoin de créer un class loader ?
    D'habitude, les drivers jdbc sont simplement chargés par le class loader normal lors de l'appel à Class.forName()

  3. #3
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut NicoV,

    En fait dans mon application je voudrais pouvoir utilisé n'importe quelle driver jdbc suivant la base de donnée que l'utilisateur va utiliser, ou même utiliser plusieurs base de données. Pour être chargé par le system class loader, j'aurai besoin de mettre les drivers jdbc de chaque base de données dans le classpath, ce qui n'est pas une bonne solution je pense. Chargé le driver dynamiquement est mieux dans mon cas non ?

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    La réponse m'intéresse également, car je pense qu'il va falloir que mon appli (un serveur) puisse charger des classes en dehors du jar et qui n'étaient pas dispo au lancement de l'appli...

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Que les classes soient dans le classpath n'empêche pas de les charger dynamiquement.

    Si tu veux créer ton ClassLoader, as-tu essayé de déléguer le defineClass() au system class loader ? Si je comprends bien comment çà marche, comme çà ta classe sera quand même associée au system class loader et pas à ton class loader perso.

  6. #6
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ok merci a toi, je vais regardé du coté de defineClass() c'est peut être la solution. Je te tiens au courant.

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,

    As tu vraiment besoin de créer ton classe loader ?
    Si tu dois simplement charger une classe qui n'est pas dans le path, l'utilisation de la classe 'URLClassLoader' peut suffir

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        File file = new File("c:\\mesClasses\\");
     
        try {
            URL url = file.toURL();
            URL[] urls = new URL[]{url};
     
            ClassLoader cl = new URLClassLoader(urls);
     
            Class cls = cl.loadClass("com.zz.maClasse");
        } catch (MalformedURLException e) {
        } catch (ClassNotFoundException e) {
        }
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Chargeur de classes
    Par tounou666 dans le forum Général Java
    Réponses: 0
    Dernier message: 26/03/2010, 16h40
  2. stub et chargeur de classe
    Par couse1 dans le forum Débuter
    Réponses: 2
    Dernier message: 22/05/2008, 15h30
  3. Chargeur de classe J2ME
    Par beepmaster dans le forum Java ME
    Réponses: 1
    Dernier message: 16/02/2008, 18h44
  4. Chargeur de Class personnalisé
    Par philippe13 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/01/2007, 10h35
  5. Réponses: 2
    Dernier message: 02/08/2006, 17h21

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