Ошибка создания файла WSDL из класса Java с использованием "ant generate.wsdl" в Apache Axis2

Я новичок в веб-сервисе и AXIS2.

Я скачал и установил axis2-1.6.2-bin.zip в C:\Apache\axis2-1.6.2-bin. Я следовал инструкции на http://axis.apache.org/axis2/java/core/docs/quickstartguide.html для создания файла WSDL. то есть в каталоге C:\Apache\axis2-1.6.2-bin\axis2-1.6.2\samples\quickstart я запустил ant generate.wsdl

Я получил сообщение об ошибке: "org.apache.commons.logging.LogConfigurationException: неверная иерархия загрузчика классов. У вас есть более одной версии org.apache.commons.logging.Log", что недопустимо ".

Я искал мою систему и обнаружил, что единственный jar, содержащий класс org.apache.commons.logging.Log, находится в C:\Apache\axis2-1.6.2-bin\axis2-1.6.2\lib\commons-logging-1.1.1.jar. Любая идея, что является причиной этой ошибки и как это исправить? Любой способ обойти проблему?

Похоже, это ошибка согласно http://jira.codehaus.org/browse/MSITE-459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=237414

1 ответ

Ссылка Jira, которую вы цитируете, связана с Maven и поэтому не имеет никакого отношения. Я подозреваю, что ваша проблема связана с вашей средой ANT.

Вы поместили банки в одно из следующих мест?

  • $ ANT_HOME / Lib
  • $ HOME /.ant / фунт

Они будут автоматически добавлены в ваш путь к классам и могут привести к конфликту классов. Хороший способ исследовать проблемы classpath - запустить ANT в режиме отладки и / или диагностики.

ant generate.wsdl -diagnostics

Будет включен отчет о том, какие банки и где загружаются ANT.

Рабочий пример

Использование ANT 1.9.0

$ ant -version
Apache Ant(TM) version 1.9.0 compiled on March 5 2013

Я извлек проект быстрого старта из загруженного дистрибутива axis2

$ cp -r $AXIS2_HOME/samples/quickstart .
$ tree
.
└── quickstart
    ├── build.xml
    ├── README.txt
    ├── resources
    │   └── META-INF
    │       └── services.xml
    └── src
        └── samples
            └── quickstart
                └── service
                    └── pojo
                        └── StockQuoteService.java

Запуск

$ ant -f quickstart/build.xml generate.wsdl -DAXIS2_HOME=$AXIS2_HOME
Buildfile: /home/mark/tmp/quickstart/build.xml

compile.service:
    [mkdir] Created dir: /home/mark/tmp/quickstart/build
    [mkdir] Created dir: /home/mark/tmp/quickstart/build/classes
    [javac] /home/mark/tmp/quickstart/build.xml:42: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /home/mark/tmp/quickstart/build/classes
    [javac] Note: /home/mark/tmp/quickstart/src/samples/quickstart/service/pojo/StockQuoteService.java uses unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.

generate.wsdl:
[java2wsdl] log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader).
[java2wsdl] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 2 seconds

Производит ожидаемые файлы

$ tree
.
├── build
│   └── StockQuoteService.wsdl
└── quickstart
    ├── build
    │   └── classes
    │       └── samples
    │           └── quickstart
    │               └── service
    │                   └── pojo
    │                       └── StockQuoteService.class
    ├── build.xml
    ├── README.txt
    ├── resources
    │   └── META-INF
    │       └── services.xml
    └── src
        └── samples
            └── quickstart
                └── service
                    └── pojo
                        └── StockQuoteService.java

Выходные данные отладки ANT показывают, что используется файл-архив AXIS2:

$ ant -f quickstart/build.xml generate.wsdl -DAXIS2_HOME=$AXIS2_HOME -debug | grep "org/apache/commons/logging"
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogConfigurationException.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory$6.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/WeakHashtable.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory$1.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/WeakHashtable$Referenced.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/WeakHashtable$WeakKey.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory$4.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory$3.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/LogFactory$2.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/LogFactoryImpl.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/LogFactoryImpl$2.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/LogFactoryImpl$1.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/impl/Log4JLogger.class
Loaded from /opt/axis2-1.6.2/lib/commons-logging-1.1.1.jar org/apache/commons/logging/Log.class
Другие вопросы по тегам