wsimport генерирует неисправный код - PullRequest
3 голосов
/ 05 июля 2011

Я использую wsimport для создания моих файлов заглушки Java.Для этого я использую файл сборки ant в Eclipse:

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
    <classpath>
        <fileset dir="../lib">
            <include name="jaxws-tools.jar" />
        </fileset>
    </classpath>
</taskdef>

<target name="generate">
    <wsimport wsdl="../wsdl/Knowledgebase.wsdl"
              destdir="../bin"
              sourcedestdir="../gen"
              keep="true"
              xendorsed="true">
    </wsimport>
</target>

Задача выполняется без ошибок.Он создает различные java-файлы, а также Knowledgebase.java и KnowledgebasePort.java.В der Knowledgebase.java есть следующие конструкторы:

public Knowledgebase(WebServiceFeature... features) {
    super(__getWsdlLocation(), KNOWLEDGEBASE_QNAME, features);
}

. Для них я получаю сообщение об ошибке «Служба конструктора (...) не определена».Я импортировал текущие jar-файлы jax-ws.Мой процесс генерации нарушен, я использую неправильные банки или где ошибка?

Ответы [ 3 ]

4 голосов
/ 05 июля 2011

Объект службы предоставляется Java EE SDK.Он добавил новый конструктор между Java EE 5 и Java EE 6. Казалось бы, вы используете wsimport из Java EE 6 JDK, а компилятор использует Java EE 5 SDK?

2 голосов
/ 06 ноября 2012

Если мы используем, например, java 1.6.0_27 и Metro 2.2, нам нужно ПОДДЕРЖИВАТЬ webservices-api.jar.

  1. Мы должны положить эту банку в папку java-install-dir \ jre \ lib \ endorsed \
  2. В случае использования Eclipse мы должны убедиться, что мы используем правильный JRE из каталога java-install-dir. Это делается в Window-> Preferences-> Java-> Installed JREs-> Add.

Теперь ошибка «Служба конструктора (...) не определена» должна исчезнуть.

1 голос
/ 06 марта 2013

Вы можете установить xendorsed = "true" и xnocompile = "false" и позволить ant скомпилировать ваши сгенерированные java-файлы, и это сработало для меня

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
        <classpath>
            <fileset dir="${ext.myproject.path}/lib">
                <include name="*.jar"/>
            </fileset>
            <fileset dir="${platformhome}/resources/ant/lib">
                <include name="*.jar"/>
            </fileset>
        </classpath>    
</taskdef>

<macrodef name="myproject_before_compile_core">
        <sequential>
            <mkdir dir="${ext.myproject.path}/gensrc"/>
            <mkdir dir="${ext.myproject.path}/classes"/>
            <echo message="Generating WS stubs for Simulate BOM Service"/>
            <wsimport wsdl="${ext.myproject.path}/resources/wsdl/service.wsdl" package="com.xx.energy.yy.xyz.ws.stubs.service" xnocompile="false" destdir="${ext.myproject.path}/classes" sourcedestdir="${ext.myproject.path}/gensrc" keep="true" wsdlLocation="${ext.myproject.path}/resources/wsdl" xendorsed="true">
                <produces dir="${ext.myproject.path}/gensrc/com/xx/energy/yy/xyz/ws/stubs/service">
                    <include name="*.java"/>
                </produces>
                <depends file="${ext.myproject.path}/resources/wsdl/service.wsdl"/>
            </wsimport>
        </sequential>
    </macrodef>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...