NoSuchMethodError: com/sun/istack/logging/Logger.getLogger

Я разработал веб-сервис и развернул его в 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>

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


person Susmitha Pandi    schedule 20.05.2010    source источник
comment
если вы застряли с Netbeans 8 и у вас возникли подобные проблемы, и вы пытаетесь выяснить, откуда загружаются библиотеки, я нашел этот пост удобным (Netbeans добавляет библиотеки в путь к классам за кулисами): stackoverflow.com/questions/6207190/   -  person hello_earth    schedule 28.01.2021


Ответы (4)


JAR jaxb-impl (2.2) содержит те же классы протоколирования, что и jar 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>
person Marco    schedule 01.02.2011

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

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

person skaffman    schedule 21.05.2010

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

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

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

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

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

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

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

HTH Манглу

person Manglu    schedule 25.05.2010

У меня была такая же проблема, и проблема была связана с совместимостью версии jaxb. Зависимость Apache Camel camel-core импортировала jaxb-core и jaxb-impl. Удаление их из зависимости от jaxws-rt решило проблему.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-core</artifactId>
    <version>${org.apache.camel.version}</version>
    <exclusions>
        <exclusion>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-core</artifactId>
         </exclusion>
         <exclusion>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-impl</artifactId>
         </exclusion>
    </exclusions>
</dependency>
person Fabio Mattavelli    schedule 15.08.2020