我有一个包含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
]。我对此有点怀疑,因为它在项目中引入了许多新的库。
答案 0 :(得分:0)
声明JBoss repo不会自动导入repo库。它只是使库可用于导入。
最重要的是,如果你想使用库中的类,那么你必须将库拉入你的项目。如果库在JBoss仓库中,那么你必须声明JBoss仓库。
答案 1 :(得分:0)
试
缺少JAX-WS依赖库“jaxws-rt.jar”。
下载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。我认为它更便携。