Ошибка при использовании настройки внешних привязок jaxb

StackOverflow https://stackoverflow.com/questions/1605825

Вопрос

Я использую инструмент 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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top