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 :

Problème de marshalling JAXB


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 50
    Points
    50
    Par défaut Problème de marshalling JAXB
    Bonjour,

    J'expérimente l'API JAXB...

    J'ai une simple classe JAVA que je voudrais convertir en XSD.

    Lorsque je tente l'opération (via jaxb2-maven plugin), l'exception suivante est lancée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.awt.image.BufferedImage does not have a no-arg default constructor.
            this problem is related to the following location:
                    at java.awt.image.BufferedImage (Unknown Source)
    J'ai bien essayé de faire une classe héritière de BufferedImage avec un constructeur par défaut et faire en sorte que ce dernier appelle un super constructeur mais le problème persiste...

    J'ai un peu googlé sans vraiment trouver de réponse à mon problème... Auriez-vous une solution à me proposer ?

    Merci d'avance pour toute suggestion.

    Vano

    * Je précise que lorsque j'enlève la prorpiété de type BufferedImage, le marshalling se passe bien...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    Après qques investigations, j'essaie d'ajouter l'utilisation d'un XmlJavaTypeAdapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class BufferedImageAdapter extends XmlAdapter<BufferedImage, BufferedImage> {
     
    	@Override
    	public BufferedImage marshal(BufferedImage pBufferedImage) throws Exception {
    		if(null == pBufferedImage) {
    			return null;
    		}
    		return pBufferedImage;
    	}
     
    	@Override
    	public BufferedImage unmarshal(BufferedImage pBufferedImage) throws Exception {
    		if(null == pBufferedImage) {
    			return null;
    		}
    		return pBufferedImage;
    	}
     
    }
    Je fais précéder la déclaration de ma property par l'annotation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @XmlJavaTypeAdapter(BufferedImageAdapter.class)
    Mais je bloque à l'étape suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: java.awt.image.Raster does not have a no-arg default constructor.
    J'ai bien sûr essayé de créer un RasterAdapter et de l'utiliser via l'annotation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @XmlJavaTypeAdapters({@XmlJavaTypeAdapter(RasterAdapter.class), @XmlJavaTypeAdapter(RasterAdapter.class)})
    Là je rencontre un autre problème sur l'utilisation de l'annotation même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The annotation @XmlJavaTypeAdapters is disallowed for this location
    Qqun a-t-il une idée ? Personne n'a jamais essayé de marshaller un objet contenant un BufferedImage ??

    Merci d'avance,

    Vano

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    J'ai finalement remplacé l'utilisation du type BufferedImage par un tableau de byte.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Java/Scala
    Inscrit en
    Octobre 2007
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Scala

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 086
    Points : 2 271
    Points
    2 271
    Par défaut
    Pour RasterAdapter tu avais l'air de le déclarer 2 fois non?

    Pour info JAX-B est assez chiant avec ses histoires de constructeur par défaut obligatoires. C'est pas toujours pratiques sur des classes qui ne sont pas les tiennes...
    Si jamais ça te bloque tu peux regarder XStream qui est un peu plus souple je trouve, sinon utiliser byte[] est en effet un bon contournement.
    React-Hebdo - Newsletter pour se tenir à jour sur l'écosystème React

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

Discussions similaires

  1. [JAXB] [Java 1.5] Problème de marshalling
    Par Soulama dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 18/04/2013, 10h45
  2. Problème avec Marshal.PtrToStructure
    Par maladebe dans le forum C++/CLI
    Réponses: 2
    Dernier message: 20/02/2009, 14h14
  3. [VS2005] Problème de marshalling et de tableau
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/09/2008, 14h11
  4. Problème de Marshaling de tableaux
    Par stephane.julien dans le forum C#
    Réponses: 1
    Dernier message: 13/05/2008, 11h23
  5. Problème de marshaling char[][] -> System.String
    Par vdew1405 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 20/08/2007, 10h12

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