Erreur lors de l'utilisation de la personnalisation des liaisons externes jaxb
Question
J'utilise l'outil wsdlc (weblogic 10.3.1) pour générer des classes à partir de wsdl. J'ai le fichier de personnalisation des liaisons jaxb externe suivant:
<jaxb:bindings
xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
schemaLocation="web/WEB-INF/....xsd"
version="2.1">
<jaxb:bindings node="/xs:schema">
<jaxb:globalBindings>
<xjc:superClass name="my.MySuperClass" />
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>
Le message d'erreur sur la compilation est le suivant: impossible de trouver le symbole my.MySuperClass.
Et à partir de javac: & "Le paquet mon n'existe pas &" ;. Le classpath = tout ce que j'inclus via <pathelement location=
etc. et 60 lignes de plugins eclipse. Le problème réside dans la commande javac initiée par wsdlc. Le chemin d'accès aux classes de cette commande est correct (chemins codés en dur, par exemple) mais le & Quot; package ... n'existe toujours pas & Quot;..
L'utilisation de wsdlc from ant ressemble à ceci:
<path id="class.path">
<pathelement path="${java.class.path}" />
<pathelement location="... hard coded path on disk to a jar" />
</path>
<target name="generate-ws-from-wsdl">
<wsdlc failOnError="true"
srcWsdl="${basedir}/web/WEB-INF/ps.wsdl"
destImplDir="${basedir}/src"
destJwsDir="${basedir}/web/WEB-INF/lib"
srcPortName="PsPort"
type="JAXWS">
<binding file="jaxb-bindings.xml" />
<classpath refid="class.path" />
</wsdlc>
</target>
La solution 3
Je n'ai pas correctement jar mes classes, je pensais pouvoir utiliser WinZip pour ajouter rapidement certaines classes à un jar, mais le "chemin" dans WinZip n'était pas égal au nom du paquet en java. Cela m'a pris du temps, mais j'ai appris quelque chose sur les classpaths.
Autres conseils
my.SuperClass
doit déjà exister, wsdlc
ne le générera pas pour vous. Lorsqu'il s'agit de compiler le code généré (ce qui est, je suppose, ce qui échoue ici), c'est parce que javac ne peut pas trouver <=> dans son chemin de classe.
Veuillez fournir l'extrait du build.xml
indiquant comment vous utilisez le wsdlc
.
Selon le documentation :
En plus des informations spécifiques à WebLogic attributs wsdlc, vous pouvez également définir le javac standard suivant les attributs; voir la documentation Ant pour plus d'informations sur chaque attribut:
bootclasspath
bootClasspathRef
classpath
- [...]
Vous pouvez également utiliser les éléments suivants éléments enfants Ant standard avec le tâche Ant wsdlc:
<FileSet>
<SourcePath>
<Classpath>
Avez-vous spécifié le chemin d'accès aux classes à inclure my.SuperClass
?