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

Persistance des données Java Discussion :

[JAXB] Generation dynamique des classes


Sujet :

Persistance des données Java

  1. #1
    Invité
    Invité(e)
    Par défaut [JAXB] Generation dynamique des classes
    Bonjour à tous,

    J'ai besoin d'utiliser JAXB pour générer certaines classes de mon application. Mais cette génération doit se faire pendant l'exécution de mon application. En plus de tous les point que sa soulève (classloader, appel de méthodes, ..), je ne sais déjà pas comment générer à la volée les .java depuis les fichiers .xsd.
    J'ai bien sur la possibilité de faire un appel à la commande 'xjc' mais il doit surement y avoir une classe paremettant de le faire sans appel à une commande extérieure. L'un d'entre vous sais t'il m'aiguiller ?


    Merci beaucoup.

  2. #2
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    Il m'a fallut 5 secondes pour trouver la réponse. Tu ouvres xjc, tu regardes le jar et tu regardes le manifest. Main-Class: com.sun.tools.xjc.XJCFacade

    Après gérer les .java ça semble plus compliqué.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui, j'ai fais le même mais je reçoit l'exception suivante :
    parsing a schema...
    compiling a schema...
    java.lang.IllegalArgumentException: Expected class javax.xml.bind.annotation.XmlAccessType but found class javax.xml.bind.annotation.AccessType
    at com.sun.codemodel.TypedAnnotationWriter.checkType(TypedAnnotationWriter.java:187)
    at com.sun.codemodel.TypedAnnotationWriter.invoke(TypedAnnotationWriter.java:101)
    at $Proxy21.value(Unknown Source)
    at com.sun.tools.xjc.generator.bean.ImplStructureStrategy$1.createClasses(ImplStructureStrategy.java:46)
    at com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassDef(BeanGenerator.java:371)
    at com.sun.tools.xjc.generator.bean.BeanGenerator.getClazz(BeanGenerator.java:403)
    at com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:178)
    at com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:151)
    at com.sun.tools.xjc.model.Model.generateCode(Model.java:228)
    at com.sun.tools.xjc.Driver.run(Driver.java:293)
    at com.sun.tools.xjc.Driver.run(Driver.java:170)
    at com.sun.tools.xjc.Driver._main(Driver.java:95)
    at com.sun.tools.xjc.Driver.access$000(Driver.java:53)
    at com.sun.tools.xjc.Driver$1.run(Driver.java:75)
    Alors que la classe 'AccessType' n'est pas présente dans mon le build-path de mon projet...
    Après de longues recherches qui ne m'ont pas aidé, je me suis permis de poser la question sur ce forum en me disant qu'il y avait peut-être une autre solution

  4. #4
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    Il n'y a aucune raison pour que cela ne fonctionne pas si ça marche à l'extérieur. Tu arrives bien à compiler normalement avec xjc ?

    Regardes peut être du côté de ton classpath :
    jaxb-api.jar jaxb-impl.jar jsr173_1.0_api.jar activation.jar

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai déjà fais tout cela. Je ne comprend vraiment pas pourquoi celà ne marche pas.

    Edit 1 : Il y à un début de solution; ça marche avec un jdk 1.5. Moi je travaille en 1.6. Reste à trouver comment le faire fonctionner avec une 1.6.
    Ce qui est "bizarre" c'est que xjc compile sans erreurs en ligne de commande et que la version installée de Java est une 1.6.

    Edit 2 : En réalité lorsque l'on installe un jdk, il y à une version de xjc présente dans le dossier 'bin' du jdk. Etant donné que mon path référence ce dossier en plus de 'jwsdp-x.y\bin', lorsque je lençais xjc depuis une ligne de commande le premier à être exécuté était celui du jdk.
    Le problème est que la version de xjc présente dans le jdk est un exe, je ne sais donc pas reprendre jaxb-xjc.jar..
    Je connais donc la cause de mes soucis mais pas la solution.
    Dernière modification par Invité ; 19/06/2008 à 14h11.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour ne pas perdre trop de temps à chercher ce qui ne vas pas (d'après certains c'est "normal, il n'y à pas de solutions" ou "il y à un des .jar qui doit-être adapté à la 1.6, faut trouver lequel"), j'ai codé mon propre compilateur JAXB qui fais un appel système à la commande "xjc".

    C'est pas le top mais ça marche..

  7. #7
    Futur Membre du Club
    Profil pro
    Informatique
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Ce lien (en anglais... hélaas) répond peut-être au mieux à ce problème :

    http://forums.sun.com/thread.jspa?messageID=10189811

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/12/2011, 10h23
  2. Appel dynamique des classes [Reflection]
    Par chental dans le forum Qt
    Réponses: 7
    Dernier message: 23/11/2009, 07h07
  3. [JAXB] Après génération des classes problème avec AccessType
    Par GabriHell dans le forum Persistance des données
    Réponses: 3
    Dernier message: 17/09/2008, 11h52
  4. [POO] Appels Dynamiques à des classes
    Par Korko Fain dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2006, 09h26
  5. Modifier dynamiquement des class
    Par titou250 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 14h15

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