2009-10-22 3 views
0

Я использую инструмент wsdlc (weblogic 10.3.1) для генерации классов из wsdl. У меня есть следующий внешний JAXB привязок файл настройки:Ошибка при использовании настройки внешних привязок 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> 

Сообщение об ошибке на complilation является: не может найти символ my.MySuperClass. И от javac: «пакет моего не существует». Классpath = все, что я включаю через <pathelement location= и т. Д. И 60 строк из плагинов eclipse. Проблема заключается в команде javac, инициируемой wsdlc. Путь к классам этой команды правильный (жестко закодированные пути, например), но все же «пакет ... не существует».

Использование wsdlc от муравьев, как так:

<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> 
+0

Можете ли вы echo $ {java.class.path} –

+0

Он содержит 'my.SuperClass'? –

+0

Он делает, я попытался положить my.MySuperClass в банку и добавить , но без разницы. – Gerard

ответ

0

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

+0

Использование winrar для грязных вещей вроде этого :) По крайней мере, проблема решена сейчас. –

1

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

+0

класс существует под деревом src, я бегу от муравья, возможно, я должен изменить путь к нему? – Gerard

+0

Это выглядит как хорошее место для поиска, да – skaffman

1

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

Согласно documentation:

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

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

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

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

ли вы указали путь к классам включают my.SuperClass?

+0

см. Мое редактирование, мой суперкласс находится в java src tree, все сгенерированные файлы попадают в банку под web/WEB-INF/lib /..._ wsdl.jar – Gerard

Смежные вопросы