Bonjour à tous,
Je dois utiliser JAXB pour générer des classes à partir d'un fichier XSD que j'ai reçu d'une source externe (et donc que je ne souhaite pas modifier). Je reçois actuellement des erreurs de conflits entre des noms de classe car je me suis aperçue qu'il y a des éléments qui sont définis à plusieurs endroits, et qui sont différents.
J'obtiens donc :
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 <xsd:complexType name="SomeNode1"> <xsd:sequence> <xsd:element name="transaction" minOccurs="0"> <xsd:complexType> ... </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SomeNode2"> <xsd:sequence> ... <xsd:element name="transaction"> <xsd:complexType> ... </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType>
J'ai donc voulu donner des nouveaux noms différents à ces 2 types, via un fichier de binding jaxb :
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
66
67
68
69
70
71 org.xml.sax.SAXParseException: A class/interface with the same name "somePackage.Transaction" is already in use. Use a class customization to resolve this conflict. at com.sun.tools.xjc.util.CodeModelClassFactory.createClass(CodeModelClassFactory.java:116) at com.sun.tools.xjc.util.CodeModelClassFactory.createClass(CodeModelClassFactory.java:77) at com.sun.tools.xjc.generator.bean.ImplStructureStrategy$1.createClasses(ImplStructureStrategy.java:78) at com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassDef(BeanGenerator.java:403) at com.sun.tools.xjc.generator.bean.BeanGenerator.getClazz(BeanGenerator.java:435) at com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:202) at com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:175) at com.sun.tools.xjc.model.Model.generateCode(Model.java:286) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.generateCode(RawXJC2Mojo.java:646) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:259) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:134) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1205) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1038) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:643) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [ERROR] Error while generating code.Location [ file:/...file.xsd{383,22}]. org.xml.sax.SAXParseException: (Relevant to above error) another "Transaction" is generated from here. at com.sun.tools.xjc.util.CodeModelClassFactory.createClass(CodeModelClassFactory.java:119) at com.sun.tools.xjc.util.CodeModelClassFactory.createClass(CodeModelClassFactory.java:77) at com.sun.tools.xjc.generator.bean.ImplStructureStrategy$1.createClasses(ImplStructureStrategy.java:78) at com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassDef(BeanGenerator.java:403) at com.sun.tools.xjc.generator.bean.BeanGenerator.getClazz(BeanGenerator.java:435) at com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:202) at com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:175) at com.sun.tools.xjc.model.Model.generateCode(Model.java:286) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.generateCode(RawXJC2Mojo.java:646) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:259) at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:134) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1205) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1038) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:643) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
J'obtiens toujours la même erreur. J'ai pensé que je n'utilisais pas le fichier de binding mais selon mes traces, c'est bien le bon répertoire qui est utilisé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <jaxb:bindings schemaLocation="../...file.xsd"> <jaxb:bindings node="//xsd:complexType[@name='SomeNode1']/xsd:sequence/xsd:element[@name='transaction']"> <jaxb:class name="SomeOtherName1" /> </jaxb:bindings> <jaxb:bindings node="//xsd:complexType[@name='SomeNode2']/xsd:sequence/xsd:element[@name='transaction']"> <jaxb:class name="SomeOtherName2" /> </jaxb:bindings> </jaxb:bindings>
Une idée pour passer outre ce problème?
Partager