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 :

ClassLoader maison et Unload de DLL


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut ClassLoader maison et Unload de DLL
    Bonjour à tous,

    Je suis en train de me créer mon propre loader et j'ai des difficultés au niveau du defineClass. Je récupère bien mon fichier.class dans un tableau de bytes par la méthode loadClassData :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    byte[] b = loadClassData(filename, jarName);
    Class myClass = defineClass(className, b, 0, b.length);
    return myClass;
    A l'aide du debugger je vois que tous les champs de myClass sont nul et lorsque que je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaClasse monInstance = (MaClasse) myClass.newInstance();
    J'ai l'erreur NoClassDefFoundError.

    Merci de votre aide.
    Dernière modification par Invité ; 15/04/2008 à 09h52.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    A priori, je vois deux choses :
    - soit ton defineClass n'arrive pas à trouver le nom de classe voulu dans ton fichier
    - soit le constructeur sans argument n'existe pas ou est protégé/privé pour ta classe voulue

  3. #3
    Invité
    Invité(e)
    Par défaut
    Quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    byte[] b = loadClassData(filename, jarName);
    Class myClass = defineClass(className, b, 0, b.length);
    return myClass;
    C'est le defineClass qui semble mauvais, le nom de className est bien le nom du package+nom de la classe (mon.package.java.MaClasse) ou seulement le nom de la classe (MaClasse) ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    Il te faut effectivement mettre le nom complet : package+nom

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui, en effet il y avait ce problème ! Merci
    Mais finalement j'ai trouvé plus simple ! Je voulais créer mon ClassLoader pour pouvoir en fait utiliser la méthode finalize() pour décharger de la jvm une DLL mais je n'ai pas l'impression que cela marche vraiment...

    Il y a t il d'autres solutions pour decharger une DLL ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    Je ne comprends pas ce que tu entends par décharger une dll. Tu veux invoquer une méthode native d'une dll C++ ? Si c'est le cas, il vaut mieux chercher du côté de JNI car il est impossible de sérialiser une instance de classe native C++ directement par les java.lang.reflect ou autre. Il faut passer par l'interface native java

Discussions similaires

  1. [Débutant] Déploiement de dll "maison"
    Par zoorgh dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/02/2012, 20h03
  2. Probleme d'unload de DLL
    Par roxly dans le forum C++
    Réponses: 2
    Dernier message: 24/01/2010, 22h01
  3. DllImport et DLL maison
    Par Harooold dans le forum C#
    Réponses: 3
    Dernier message: 25/02/2009, 11h43
  4. chargement d'une dll maison située au meme endroit que le *.xls
    Par ppaul127 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2007, 00h09
  5. Problème d'utilisation de Dll faite maison. . .
    Par _SamSoft_ dans le forum Windows
    Réponses: 27
    Dernier message: 20/02/2007, 13h55

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