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>
Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top