spring - NoClassDefFoundError(javax/ws/rs/ProcessingException) 在 spring 服务中使用 Jersey lib

标签 spring tomcat jersey jackson classnotfoundexception

我已经尝试在我的项目中使用 Jersey(A)。

有一个服务,我新建了一个实例如下:

@Service
public class DatabaseServiceImpl implements DatabaseService
{
   HttpClient hc = new HttpClient();
}

HttpClient 如下:

 public class HttpClient
    {
         public HttpClient()
         {
            clientConfig = new ClientConfig().register(new JacksonFeature());
            client = ClientBuilder.newClient(clientConfig);
            HttpAuthenticationFeature auth = HttpAuthenticationFeature.basic(username, password);
            webTarget = client.target(baseURL).register(auth);
            etc..
         }
    }

HttpClient 代码在刚刚为测试创建的另一个项目 (B) 中运行良好。 但是,当我将此代码添加到我的项目 (A) 中时,编译没问题,但启动 tomcat 会抛出错误:

java.lang.NoClassDefFoundError: javax/ws/rs/ProcessingException

我想知道它是否不是服务,所以我不能在服务 (DatabaseServiceImpl) 中使用。所以我将 HttpClient 作为服务,但仍然出现如下错误:

[ERROR][localhost-startStop-1][org.springframework.web.context.ContextLoader.initWebApplicationContext():324][14/08/04 12:57:18.287][2927]
Context initialization failed
java.lang.NoClassDefFoundError: javax/ws/rs/ProcessingException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:972)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:945)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.ProcessingException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 27 more
八月 04, 2014 12:57:18 下午 org.apache.catalina.core.StandardContext listenerStart
嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/ws/rs/ProcessingException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:972)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:945)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.ProcessingException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 27 more

我导入的库在两个项目之间完全相同,包括 Jersey 和 Jackson。 我是否遗漏了任何设置,导致 spring 无法找到类(class)??

谢谢

最佳答案

解决了!!

由于我的项目没有使用 Maven 或 gradle,所以有很多 lib 依赖和部署问题。

这个问题主要是由Deployment Assembly引起的,右击project->properties->Deployment Assembly->add lib,为你的Java EE Web Application项目定义打包结构。然后将 lib 部署到 web-inf/lib。

谢谢大家。

关于spring - NoClassDefFoundError(javax/ws/rs/ProcessingException) 在 spring 服务中使用 Jersey lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25112144/

相关文章:

spring - 从 tomcat 6 切换到 tomcat 7 时启动 spring 应用程序时出现错误日志

java - 在 wildfly 8 中使用 apache commons BasicDataSource

java - Tomcat 问题 :java.net.BindException : Address already in use <null>:8080 at org. apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)

java - 如何防止gradle下载SNAPSHOT jar

java - Spring中,jdbcTemplate的queryForList函数作为对象返回导致NumberFormatException

java - Jersey 客户端在 ClientResponse.getLastModified() 中抛出 NPE

java - 在 Jersey 2.17 中使用 SelectableEntityFiltering

Java Rest 构造函数继承

java - 是否可以使用 MockMvc 进行 JPA 测试?

java - spring可以支持多应用共享成员(member)吗?