部署Web应用程序时,我得到异常NoClassDefFoundError:LocalizableImpl

时间:2013-09-27 23:49:46

标签: java web-services maven tomcat

我有一个包含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

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

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

3 个答案:

答案 0 :(得分:0)

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

最重要的是,如果你想使用库中的类,那么你必须将库拉入你的项目。如果库在JBoss仓库中,那么你必须声明JBoss仓库。

答案 1 :(得分:0)

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

转到http://jax-ws.java.net/

下载JAX-WS RI发行版。

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

重启Tomcat。

答案 2 :(得分:0)

如果您使用的是Maven,则在项目中添加以下内容即可解决您的问题:

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

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