2009-10-22 4 views
0

J'utilise l'outil wsdlc (weblogic 10.3.1) pour générer des classes à partir de wsdl. Je les liaisons de JAXB externe suivant fichier de personnalisation:Erreur lors de l'utilisation de la personnalisation des liaisons externes jaxb

<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 complilation est: ne peut pas trouver my.MySuperClass symbole. Et 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 lancée par wsdlc. Le chemin de classe de cette commande est correct (chemins codés en dur, par exemple) mais toujours "package ... n'existe pas".

L'utilisation de wsdlc de fourmi est comme 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> 
+0

Pouvez-vous echo $ {java.class.path} –

+0

Est-ce qu'il contient 'my.SuperClass'? –

+0

C'est le cas, j'ai essayé de mettre my.MySuperClass dans un pot et d'ajouter mais pas de différence. – Gerard

Répondre

0

Je n'ai pas jar mes classes correctement, je pensais pouvoir utiliser WinZip pour ajouter rapidement des classes à un pot, mais le 'chemin' dans WinZip n'était pas égal au nom du paquet dans java. Cela m'a pris du temps mais j'ai appris quelque chose sur les classes.

+0

Utilisation winrar pour les choses sales comme ça :) Au moins, le problème est résolu maintenant. –

1

my.SuperClass doit déjà exister, wsdlc ne sera pas pour vous générer. Quand il s'agit de compiler le code généré (ce qui est ce que je suppose est ce qui échoue ici), c'est parce que javac ne peut pas trouver my.SuperClass dans son chemin de classe.

+0

la classe existe sous l'arbre src, je cours de fourmi, peut-être que je devrais changer le chemin de classe là-bas? – Gerard

+0

Cela ressemblerait à un bon endroit pour regarder, oui – skaffman

1

Veuillez fournir l'extrait du build.xml en indiquant comment utiliser le wsdlc.

Selon le documentation:

En plus des spécifiques à WebLogic wsdlc attributs, vous pouvez également définir la javac standard suivant attributs; consultez la documentation Ant pour plus d'informations sur chaque attribut :

  • bootclasspath
  • bootClasspathRef
  • classpath
  • [...]

Vous pouvez également utiliser la norme suivante Éléments enfants Ant avec la tâche wsdlc Ant:

  • <FileSet>
  • <SourcePath>
  • <Classpath>

Est-ce que vous spécifiez le chemin de classe pour inclure my.SuperClass?

+0

voir mon edit, ma superclasse est en java src tree, tous les fichiers générés se retrouvent dans un jar sous web/WEB-INF/lib /..._ wsdl.jar – Gerard

Questions connexes