Ошибка при использовании настройки внешних привязок jaxb
Вопрос
Я использую инструмент wsdlc (weblogic 10.3.1) для создания классов из wsdl.У меня есть следующий файл настройки внешних привязок 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>
Сообщение об ошибке при заполнении выглядит следующим образом:не удается найти символ my.MySuperClass.И из javac:"пакет my не существует".Путь к классу = все, что я включаю через <pathelement location=
и т.д.и 60 строк из плагинов eclipse.Проблема заключается в команде javac, которую инициирует wsdlc.Путь к классу этой команды правильный (например, жестко закодированные пути), но все же "package ...не существует".
Использование wsdlc из ant выглядит следующим образом:
<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>
Решение 3
Я не испортил свои классы должным образом, я думал, что смогу использовать WinZip для быстрого добавления некоторых классов в jar, но «путь» в WinZip не совпадал с именем пакета в java. Это заняло у меня некоторое время, но я кое-что узнал о классовых путях.
Другие советы
my.SuperClass
уже должен существовать, wsdlc
не сгенерирует его для вас. Когда дело доходит до компиляции сгенерированного кода (что, как я полагаю, является причиной неудачи), это происходит потому, что javac не может найти my.SuperClass
в своем пути к классам.
Пожалуйста, предоставьте выдержку из build.xml
показывая, как вы используете wsdlc
.
В соответствии с Документация:
В дополнение к конфигурированию параметры wsdlc атрибутами, можно также определить следующий стандарт помощью javac атрибуты;смотрите документацию Ant для получения дополнительной информации о каждом атрибуте:
bootclasspath
bootClasspathRef
classpath
- [...]
Вы также можете использовать следующие стандартные дочерние элементы Ant с помощью задачи Ant wsdlc:
<FileSet>
<SourcePath>
<Classpath>
Вы указали путь к классу для включения my.SuperClass
?