7

我有一个包含 Web 服务的标准 J2EE Web 应用程序。我正在使用webservices-rt图书馆来托管服务。[参见下面的 Maven 依赖项]。但是,我在运行时收到以下异常:

SEVERE: Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.NoClassDefFoundError: com/sun/xml/ws/util/localization/LocalizableImpl
    at com.sun.xml.ws.util.exception.JAXWSExceptionBase.<init>(JAXWSExceptionBase.java:63)
    at com.sun.xml.ws.transport.http.servlet.WSServletException.<init>(WSServletException.java:47)
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [...]
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.ws.util.localization.LocalizableImpl
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    ... 33 more

Maven WS 依赖

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>webservices-rt</artifactId>
        <version>1.4</version>
        <scope>compile</scope>
    </dependency>

我错过了图书馆吗?我试过添加jaxws-rt. 但是,这需要额外的 repo [ jboss]。我对此有点怀疑,因为它在项目中引入了许多新库。

4

4 回答 4

3

如果您使用的是 Maven,请将以下内容添加到您的项目中应该可以解决您的问题:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.2</version>
</dependency>

您不必添加其他 jar,因为它会自动提取其余的依赖项。我更喜欢将 jar 添加到我的战争而不是 Tomcat 库中。我认为它更便携。

于 2019-07-09T07:48:47.657 回答
1

尝试

缺少 JAX-WS 依赖库“jaxws-rt.jar”。

去这里http://jax-ws.java.net/

下载 JAX-WS RI 发行版。

解压并将“jaxws-rt.jar”复制到Tomcat库文件夹“{$TOMCAT}/lib”。

重新启动 Tomcat。

于 2013-09-27T23:54:40.663 回答
1

对于 maven、tomcat 应用程序,请在您的 pom.xml 中尝试这些依赖项

<dependencies>
    <!-- jax-ws maven dependency -->
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.2.8</version>
    </dependency>
    <!-- servlet provided by tomcat -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core -->
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.2.7</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.xml.stream.buffer/streambuffer -->
    <dependency>
        <groupId>com.sun.xml.stream.buffer</groupId>
        <artifactId>streambuffer</artifactId>
        <version>1.5.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.7</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.xml.ws/policy -->
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>policy</artifactId>
        <version>2.3.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish.gmbal/gmbal-api-only -->
    <dependency>
        <groupId>org.glassfish.gmbal</groupId>
        <artifactId>gmbal-api-only</artifactId>
        <version>3.2.0-b003</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish.ha/ha-api -->
    <dependency>
        <groupId>org.glassfish.ha</groupId>
        <artifactId>ha-api</artifactId>
        <version>3.1.9</version>
    </dependency>
</dependencies>

我希望这适用于将面临这个问题的新人

问候

于 2017-05-08T15:23:19.267 回答
0

声明 JBoss 存储库不会自动导入存储库库。它只是使库可用于导入。

底线是,如果您想使用库中的类,则必须将库拉入您的项目中。如果库在 JBoss 存储库中,那么您必须声明 JBoss 存储库。

于 2013-09-27T23:53:03.303 回答