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

avec Java Discussion :

Contourner une IllegalAnnotationExceptions


Sujet :

avec Java

  1. #1
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut Contourner une IllegalAnnotationExceptions
    Bonjour tout le monde,

    J'ai un problème pour finir un exercice, je dois enregistrer dans un fichier XML un ArrayList contenant des objets implémenter d'une interface.
    Comment contourner le problème évident que JAXB ne peut pas gérer les interfaces.
    Cette liste ce trouve dans un objet marquer d'un @XmlRootElement et c'est cette objet auquel j'applique le marshaller.
    J'ai penser à le sérialiser en amont mais ça n'a pas marcher.
    Je m'y suis peut être mal pris.
    Est-ce que quelqu'un à une solution?

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    JAXB n'a aucun problème avec les interfaces type List, j'utilise ça régulièrement sans soucis il me semble.

    Quel est ton code et ton erreur exacte?

  3. #3
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Voila le Main:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package cedric.fechino.garage;
     
    import cedric.fechino.garage.vehicule.A300B;
    import cedric.fechino.garage.vehicule.D4;
    import cedric.fechino.garage.vehicule.Lagouna;
    import cedric.fechino.garage.vehicule.Vehicule;
    import cedric.fechino.garage.vehicule.moteur.MoteurDiesel;
    import cedric.fechino.garage.vehicule.moteur.MoteurElectrique;
    import cedric.fechino.garage.vehicule.moteur.MoteurEssence;
    import cedric.fechino.garage.vehicule.moteur.MoteurHybride;
    import cedric.fechino.garage.vehicule.option.BarreDeToit;
    import cedric.fechino.garage.vehicule.option.Climatisation;
    import cedric.fechino.garage.vehicule.option.GPS;
    import cedric.fechino.garage.vehicule.option.SiegeChauffant;
    import cedric.fechino.garage.vehicule.option.VitreElectrique;
     
    public class Main {
        public static void main(String[] args) {
       	 Garage garage = new Garage();   
       	 System.out.println(garage);
     
       	 Vehicule lag1 = new Lagouna();
       	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));
       	 lag1.addOption(new GPS());
       	 lag1.addOption(new SiegeChauffant());
       	 lag1.addOption(new VitreElectrique());
       	 garage.addVoiture(lag1);
     
       	 Vehicule A300B_2 = new A300B();
       	 A300B_2.setMoteur(new MoteurElectrique("1500 W", 1234d));
       	 A300B_2.addOption(new Climatisation());
       	 A300B_2.addOption(new BarreDeToit());
       	 A300B_2.addOption(new SiegeChauffant());
       	 garage.addVoiture(A300B_2);
     
       	 Vehicule d4_1 = new D4();
       	 d4_1.setMoteur(new MoteurDiesel("200 Hdi", 25684.80d));
       	 d4_1.addOption(new BarreDeToit());
       	 d4_1.addOption(new Climatisation());
       	 d4_1.addOption(new GPS());
       	 garage.addVoiture(d4_1);   	 
     
       	 Vehicule lag2 = new Lagouna();
       	 lag2.setMoteur(new MoteurDiesel("500 Hdi", 456987d));
       	 garage.addVoiture(lag2);
     
       	 Vehicule A300B_1 = new A300B();
       	 A300B_1.setMoteur(new MoteurHybride("ESSENCE/Electrique", 12345.95d));
       	 A300B_1.addOption(new VitreElectrique());
       	 A300B_1.addOption(new BarreDeToit());
       	 garage.addVoiture(A300B_1);
     
       	 Vehicule d4_2 = new D4();
       	 d4_2.setMoteur(new MoteurElectrique("100 KW", 1224d));
       	 d4_2.addOption(new SiegeChauffant());
       	 d4_2.addOption(new BarreDeToit());
       	 d4_2.addOption(new Climatisation());
       	 d4_2.addOption(new GPS());
       	 d4_2.addOption(new VitreElectrique());
       	 garage.addVoiture(d4_2); 		
     
       	System.out.println(garage.vehicules.get(3).toString());
        }
    }
    Voila le code du garage:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    package cedric.fechino.garage;
     
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.Unmarshaller;
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlElementWrapper;
    import javax.xml.bind.annotation.XmlRootElement;
     
    import cedric.fechino.garage.vehicule.Vehicule;
     
    	@XmlAccessorType(XmlAccessType.FIELD)
    	@XmlRootElement
    public class Garage{
     
    	@XmlElementWrapper(name = "listVehicule")
    	@XmlElement(name = "vehicules")
    	protected List<Vehicule> vehicules = new ArrayList<Vehicule>();
     
    	public Garage(){}
     
    	public String toString(){
    		File file = new File("sauvegarde.xml");
    		try {
    			if(!file.exists()){ 
    					file.createNewFile();
    			}else{
    				JAXBContext context = JAXBContext.newInstance(Garage.class);
    				Unmarshaller unmarshaller = context.createUnmarshaller();
    				Garage garage = (Garage)unmarshaller.unmarshal(file);
    				this.vehicules = garage.vehicules;
    			}
    		} catch (Exception e) { e.printStackTrace(); } 
     
    		String liste = "";
     
    		if(vehicules.isEmpty()){ System.err.println("Aucune voiture sauvegardée !"); }
    		else{ for (Vehicule voiture : vehicules) { liste += voiture.toString(); } }	
     
    		System.out.println("***************************");
    		System.out.println("*  Garage Open Classrooms  *");
    		System.out.println("***************************");
     
    		return liste; 
    	}
     
    	public void addVoiture(Vehicule vehicule){ 
    		this.vehicules.add(vehicule);  
    		try {
    			JAXBContext context = JAXBContext.newInstance(Garage.class);
    			Marshaller marshaller = context.createMarshaller();
    			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    			marshaller.marshal(this, new File("sauvegarde.xml"));
    		} catch (Exception e) { e.printStackTrace(); }
     
    	}
     
     
    }
    Les voitures:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    package cedric.fechino.garage.vehicule;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlElementWrapper;
     
    import cedric.fechino.garage.vehicule.moteur.Moteur;
    import cedric.fechino.garage.vehicule.option.Option;
     
    public class Vehicule{
    	private Double prix;
    	private String nom;
    	private Marque marque;
    	private Moteur moteur;
    	@XmlElementWrapper(name = "listOptions")
    	@XmlElement(name = "options")
    	private List<Option> listOptions;
     
     
    	public Vehicule() { 
    		listOptions = new ArrayList<>(); 
    	}
     
    	public String toString() {
    		return "+ Voiture " + marque.toString() + ": " + moteur.toString() + " (" + prix.toString() + "€) " + listOptions.toString() + " Total : " + getTotal().toString() + "€ \n";
    	}
     
    	public Double getTotal() {
    		double total = prix;
    		for (Option option : listOptions) { total += option.getPrix(); }
     
    		return total;
    	}
     
    	public void addOption(Option option) { listOptions.add(option); }
     
    	public String getNom() { return nom; }
    	public List<Option> getOptions() { return listOptions; }
    	public Marque getMarque() { return marque; }
    	public Double getPrix() { return this.prix; }
    	public Moteur getMoteur() { return moteur; }
     
    	public void setNom(String nom) { this.nom = nom; }
    	public void setListOptions(List<Option> listOptions) { this.listOptions = listOptions; }
    	public void setMarque(Marque marque) { this.marque = marque; }
    	public void setPrix(Double prix) { this.prix = prix; }
    	public void setMoteur(Moteur moteur) { this.moteur = moteur; }
     
    }
    Les Options:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package cedric.fechino.garage.vehicule.option;
     
    import java.io.Serializable;
     
    public interface Option extends Serializable{
     
    	public double getPrix();
     
    }
    Un exemple d'Option:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package cedric.fechino.garage.vehicule.option;
     
    public class SiegeChauffant implements Option{
    	private final double prix = 562.9;
    	@Override
    	public double getPrix() { return prix; }
    	public String toString(){ return "Siege Chauffant (" + this.getPrix() + "€)"; }
    }
    Après, j'ai un enum pour les moteur et un autre pour les marques avec la classe mère et leurs enfants, mais tous ça fonctionne très bien.
    Et voila l'erreur:
    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
    20
    21
    22
    23
    24
    25
    26
    com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
    cedric.fechino.garage.vehicule.option.Option est une interface et JAXB ne peut pas gérer les interfaces.
    	this problem is related to the following location:
    		at cedric.fechino.garage.vehicule.option.Option
    		at private java.util.List cedric.fechino.garage.vehicule.Vehicule.listOptions
    		at cedric.fechino.garage.vehicule.Vehicule
    		at protected java.util.List cedric.fechino.garage.Garage.vehicules
    		at cedric.fechino.garage.Garage
     
    	at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
    	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:445)
    	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
    	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:124)
    	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1123)
    	at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:497)
    	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
    	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
    	at javax.xml.bind.ContextFinder.find(ContextFinder.java:462)
    	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
    	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
    	at cedric.fechino.garage.Garage.addVoiture(Garage.java:56)
    	at cedric.fechino.garage.Main.main(Main.java:27)

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ha oui, je pensais que tu parlais des interfaces genre List


    Bon, a priori, pour ce que j'en sais, tu dois au minimum faire les correction suivantes:

    Si mes souvenirs sont bon, chaque classe doit faire l'objet d'une annotation @XmlRootElement, pas seulement Garage.
    Ensuite, je suppsoe que tu veux un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Vehicule>
      ....
      <listOptions>
         <gps ...../>
         <siegeChauffant ...../>
    Faut changer ta liste comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	@XmlElementWrapper(name = "listOptions")
            @XmlAnyElement(lax=true)  // Les éléments seront appelé "<gps>" "<siegeChauffant>" etc.
    	private List<Option> listOptions;
    Chacune des tes options doit aussi avoir l'annotation

    @XmlRootElement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @XmlRootElement
    public class SiegeChauffant implements Option{
    et tu dois informer JAXB de l'existence de ces classes car il ne saura pas les trouver juste en parcourant la classe Garage. Ca peux se faire soit lors de la création du JAXBContext:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JAXBContext context = JAXBContext.newInstance(Garage.class, GPS.class, BarreDeToit.class, ......);
    Soit en annotant la classe Vehicule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @XmlRootElement
    @XmlSeeAlso({ GPS.class, BarreDeToit.class,SiegeChauffant.class})
    public class Vehicule{

    Ensuite, coté design, je me permet de trouver ça un peu bancal. Si demain le concessionnaire a besoin d'encoder une voiture avec une nouvelle option genre "Calandre en V" ou "treuil avant" ou "volant tactile" ... T'es obligé de repasser par une phase de développement, tu rajoute des tags en plus dans ton xml (donc risque de casser les processus en aval) etc. C'est assez fragile,, d'autant plus que dans l'industrie automobile, ils ont bien bien bien souvent de nouvelles options à ajouter . Personnellement j'opterais plutôt vers un design du genre

    public class Option {
    public String type;
    public Map<String,String> parameters;
    }

    publci class OptionType {
    public String type;
    public Map<String,String> parameterTypes;
    }

    et j'aurais ensuite par exemple un OptionType dans une base de donnée avec comme
    type="GPS tomtom"
    parameterTypes={"model"="modèle du GPS","license"="License de carte"}

    et dans le xml, une voiture aurait pour option
    type="GPS tomtom"
    parameters={"model"="TOMTOM GO", "license"="East Europe, 3 years"}

    Ce qui pourrait donnert dans le xml, avec un peu de bidouille en utilisant un MapAdapter pour simplifier la représentation d'un Map

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <option type="GPS tomtom">
      <parameter key="model" value="TOMTOM GO"/>
      <parameter key="license" value="East Europe, 3 years"/>
    </option>

  5. #5
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Pour le Moteur et les Marques j'ai pas eu besoin de faire @XmlRootElement et ça fonctionne très bien,
    t'es sur de toi?

    J'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @XmlRootElement
    @XmlSeeAlso({ GPS.class, BarreDeToit.class,SiegeChauffant.class})
    public Vehicule() {
    Voilà la réponse:
    The annotation @XmlSeeAlso is disallowed for this location
    et
    The annotation @XmlSeeAlso is disallowed for this location

    Pour ce qui est du design, j'aurais pas du tout fait comme ça
    Malheureusement je suis borné par les règles de l’exercice
    Je peut même pas changer ce que tu me propose (alors que c'est une très bonne idée)
    Chaque variable et déjà déterminé au début de l'exercice.
    C'est pour ça que ça ne me plais pas de sérialiser Garage avant de le sauvegarder
    parce que je doit implémenter Serializable et ça c'est pas prévu.
    Ah oui une chose importante c'est qu'il n'est pas précisé dans quel type de ficher je doit faire ma sauvegarde ni de quel manière.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est à mettre sur la classe, pas sur le constructeur

  7. #7
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Super, merci beaucoup.
    Mais maintenant j'ai ça:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    javax.xml.bind.UnmarshalException
     - with linked exception:
    [org.xml.sax.SAXParseException; systemId: file:/C:/Users/Pecose%20Billos/PecEngineWorkspace/Activite-Garage/sauvegarde.xml; lineNumber: 1; columnNumber: 1; Fin prématurée du fichier.]
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
    	at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:563)
    	at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:249)
    	at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162)
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171)
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:189)
    	at cedric.fechino.garage.Garage.toString(Garage.java:36)
    	at java.lang.String.valueOf(String.java:2994)
    	at java.io.PrintStream.println(PrintStream.java:821)
    	at cedric.fechino.garage.Main.main(Main.java:20)
    Caused by: org.xml.sax.SAXParseException; systemId: file:/C:/Users/Pecose%20Billos/PecEngineWorkspace/Activite-Garage/sauvegarde.xml; lineNumber: 1; columnNumber: 1; Fin prématurée du fichier.
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
    	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
    	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1437)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1019)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:118)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    	at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
    	... 9 more
    Une idée d'où ça vient?

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton fichier est vide.

  9. #9
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Et bien voilà, c'est fini.
    Merci beaucoup de ton aide tchize_°.
    Grace à toi c'est terminé.

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

Discussions similaires

  1. Comment contourner une erreur Mysql 1093?
    Par cassy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/05/2007, 17h03
  2. Contourner une expression non définie
    Par TicTac75 dans le forum Access
    Réponses: 3
    Dernier message: 20/02/2007, 18h52
  3. contourner une réparation lancée
    Par Micke7 dans le forum Windows XP
    Réponses: 7
    Dernier message: 25/10/2006, 15h16
  4. Besoin d'aide pour contourner une internal compiler error
    Par Laurent Gomila dans le forum C++
    Réponses: 18
    Dernier message: 27/06/2006, 22h09

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