NoSuchMethodError: com / sun / istack / logging / Logger.getLogger - PullRequest
0 голосов
/ 21 мая 2010

Я разработал веб-сервис и развернул его на websphere 7.0 и разработал клиент динамической отправки с использованием API-интерфейсов JAX-WS, который также работает на том же сервере приложений. Я получаю сообщение об ошибке в следующей строке:

Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
Error:
Caused by: java.lang.NoSuchMethodError: com/sun/istack/logging/Logger.getLogger(Ljava/lang/Class;)Lcom/sun/istack/logging/Logger;
at com.sun.xml.ws.api.config.management.policy.ManagementAssertion.<clinit>(ManagementAssertion.java:87)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
at com.sun.xml.ws.server.MonitorBase.createManagedObjectManager(MonitorBase.java:177)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:196)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:174)
at com.sun.xml.ws.client.dispatch.DispatchImpl.<init>(DispatchImpl.java:129)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.<init>(SOAPMessageDispatch.java:77)
at com.sun.xml.ws.api.pipe.Stubs.createSAAJDispatch(Stubs.java:143)
at com.sun.xml.ws.api.pipe.Stubs.createDispatch(Stubs.java:264)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:390)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:401)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:383)
at javax.xml.ws.Service.createDispatch(Service.java:336) 

Я включил следующую зависимость.

    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.1</version>
    </dependency>

Я также попытался добавить зависимость политики (версии - 2.2 и 2.2.1)

<dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>policy</artifactId>
        <version>2.2.1</version>
</dependency>

Есть идеи, какие еще зависимости мне нужно добавить?

Ответы [ 3 ]

1 голос
/ 01 февраля 2011

jaxb-impl jar (2.2) содержит те же классы журналирования, что и jasta istack-commons-runtime.

Добавьте следующие исключения, чтобы исправить несоответствие версий:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.2</version>
    <exclusions>
        <exclusion>
            <artifactId>istack-commons-runtime</artifactId>
            <groupId>com.sun.istack</groupId>
        </exclusion>
    </exclusions>
</dependency>
0 голосов
/ 25 мая 2010

Проблема заключается в том, что в пути к классу, вероятно, имеется несколько вхождений этого класса - Logger (com.sun.istack.logging.Logger).

Когда код был скомпилирован, у него был доступ к этому классу Logger, который отличается от того, который найден во время выполнения.

Две возможности:

  1. Там только одна копия Logger во время выполнения, и она не соответствует тому, что использовалось во время компиляции.

  2. Существует несколько копий этого регистратора, и загрузчик классов сначала находит неправильную копию, следовательно, сообщает об этой ошибке.

Проверьте файлы JAR, в которых содержится этот файл.

Обычно он находится в jaxb-osgi.jar.

НТН Manglu

0 голосов
/ 21 мая 2010

Я считаю, что JAX-WS 2.1 уже встроен в Java 6, поэтому вам не нужно связывать его с вашим приложением (если вы используете Java 6, то есть). Если вы попытаетесь, вы, вероятно, получите ошибки загрузки классов, подобные этой.

Попробуйте удалить все JAR-файлы jax-ws из приложения, включая jaxws-api.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...