Error al utilizar la personalización de enlaces externos jaxb
Pregunta
Utilizo la herramienta wsdlc (weblogic 10.3.1) para generar clases desde wsdl. Tengo el siguiente archivo de personalización de enlaces jaxb externos:
<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>
El mensaje de error en la compilación es: no se puede encontrar el símbolo my.MySuperClass.
Y desde javac: " package my no existe " ;. El classpath = todo lo que incluyo a través de < pathelement location =
etc. y 60 líneas de los complementos de eclipse. El problema radica en el comando javac que inicia wsdlc. La ruta de clase de este comando es correcta (rutas codificadas de forma rígida, por ejemplo), pero aún así "paquete ... no existe".
El uso de wsdlc desde ant es así:
<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>
Solución 3
No armé mis clases correctamente, pensé que podía usar WinZip para agregar rápidamente algunas clases a un tarro, pero la "ruta" en WinZip no era igual al nombre del paquete en java. Me tomó un tiempo pero aprendí algo sobre classpaths.
Otros consejos
my.SuperClass
ya tiene que existir, wsdlc
no lo generará por ti. Cuando se trata de compilar el código generado (que es donde supongo que es lo que está fallando aquí), es porque javac no puede encontrar my.SuperClass
en su classpath.
Proporcione el extracto del build.xml
que muestra cómo usa el wsdlc
.
De acuerdo con documentación :
Además de los específicos de WebLogic Atributos wsdlc, también puede definir el siguiente javac standard atributos; ver la documentación de la hormiga para información adicional sobre cada atributo:
bootclasspath
bootClasspathRef
classpath
- [...]
También puedes usar lo siguiente Elementos infantiles estándar de la hormiga con el wsdlc Ant tarea:
<FileSet>
<SourcePath>
<Classpath>
¿Especificó la ruta de clase para incluir my.SuperClass
?