Ошибка при использовании настройки внешних привязок jaxb - PullRequest
0 голосов
/ 22 октября 2009

Я использую инструмент 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: "пакет мой не существует". Classpath = все, что я включаю через <pathelement location= и т. Д. И 60 строк из плагинов Eclipse. Проблема заключается в команде javac, которую инициирует wsdlc. Путь к классу этой команды правильный (например, жестко закодированные пути), но все еще «пакет ... не существует».

Использование 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 ]

1 голос
/ 22 октября 2009

Пожалуйста, предоставьте отрывок из build.xml, показывающий, как вы используете wsdlc.

Согласно документации :

В дополнение к специфичным для WebLogic атрибуты wsdlc, вы также можете определить следующий стандарт Javac атрибуты; см документацию муравья для дополнительной информации о каждом атрибуты:

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

Вы также можете использовать следующие стандартные дочерние элементы Ant с Задача Ant wsdlc:

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

Вы указали путь к классу для включения my.SuperClass?

1 голос
/ 22 октября 2009

my.SuperClass уже должен существовать, wsdlc не сгенерирует его для вас. Когда дело доходит до компиляции сгенерированного кода (который, как я полагаю, является тем, что здесь не работает), это потому, что javac не может найти my.SuperClass в своем пути к классам.

0 голосов
/ 23 октября 2009

Я не испортил свои классы должным образом, я думал, что смогу использовать WinZip для быстрого добавления некоторых классов в jar, но «путь» в WinZip не был равен имени пакета в java. Это заняло у меня некоторое время, но я кое-что узнал о классовых путях.

...