Ошибка создания файла 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