当前位置: 首页 > 知识库问答 >
问题:

"javax.servlet.ServletException:java.lang.NoClassDefFoundError"在Tomcat上实现泽西时

凌志学
2023-03-14

当我尝试在Linux服务器上的Tomcat上使用(“sudo服务tomcat7启动”)实现下面的方法时,除了这个方法之外,其他所有方法都可以正常工作。

@GET
    @Path("getapk")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    public Response getApk() {
        System.out.println("GetApk!");
        final File apkFile = new File(apkFileLocation).listFiles()[0];
        return Response.ok(
                    new StreamingOutput() {
                        public void write(OutputStream output) throws IOException,
                        WebApplicationException {
                            output.write(Files.readAllBytes(apkFile.toPath()));
                        }
                    }
                ).header("Content-Disposition", ContentDisposition.type("attachment").fileName(apkFile.getName()).build())
                .build();
    }

奇怪的是,当我在Eclipse中“在服务器上运行”时,这个方法工作得很好。

以下是我收到的错误消息:

HTTP状态500-

类型异常报告

消息

说明服务器遇到内部错误(),无法满足此请求。

例外

javax。servlet。ServletException:java。lang.NoClassDefFoundError:robertlee/resource/EcgCloudDatabase$1 com。太阳运动衫spi。容器servlet。网络组件。服务(WebComponent.java:420)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:538)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:716)javax。servlet。http。HttpServlet。服务(HttpServlet.java:722)根本原因

Java语言lang.NoClassDefFoundError:robertlee/resource/EcgCloudDatabase$1 robertlee。资源EcgCloudDatabase。getApk(EcgCloudDatabase.java:691)sun。反映NativeMethodAccessorImpl。invoke0(本机方法)sun。反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:57)sun。反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.java:43)java。lang.reflect。方法调用(Method.java:606)com。太阳运动衫spi。容器JavaMethodInvokerFactory 1美元。调用(JavaMethodInvokerFactory.java:60)com。太阳运动衫服务器实施。模型方法派遣AbstractResourceMethodDispatchProvider$ResponseOutInvoker_dispatch(AbstractResourceMethodDispatchProvider.java:205)com。太阳运动衫服务器实施。模型方法派遣ResourceJavaMethodDispatcher。dispatch(ResourceJavaMethodDispatcher.java:75)com。太阳运动衫服务器实施。uri。规则。HttpMethodRule。接受(HttpMethodRule.java:302)com。太阳运动衫服务器实施。uri。规则。RightHandPathRule。接受(RightHandPathRule.java:147)com。太阳运动衫服务器实施。uri。规则。ResourceClassRule。接受(ResourceClassRule.java:108)com。太阳运动衫服务器实施。uri。规则。RightHandPathRule。接受(RightHandPathRule.java:147)com。太阳运动衫服务器实施。uri。规则。RootResourceClassesRule。接受(rootresourceClasseRule.java:84)com。太阳运动衫服务器实施。应用WebApplicationImpl_HandlerRequest(WebApplicationImpl.java:1511)com。太阳运动衫服务器实施。应用WebApplicationImpl_HandlerRequest(WebApplicationImpl.java:1442)com。太阳运动衫服务器实施。应用WebApplicationImpl。HandlerRequest(WebApplicationImpl.java:1391)com。太阳运动衫服务器实施。应用WebApplicationImpl。HandlerRequest(WebApplicationImpl.java:1381)com。太阳运动衫spi。容器servlet。网络组件。服务(WebComponent.java:416)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:538)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:716)javax。servlet。http。HttpServlet。服务(HttpServlet.java:722)根本原因

Java语言lang.ClassNotFoundException:robertlee。资源EcgCloudDatabase$1组织。阿帕奇。卡特琳娜。装载机。WebappClassLoader。loadClass(WebappClassLoader.java:1701)org。阿帕奇。卡特琳娜。装载机。WebappClassLoader。loadClass(WebappClassLoader.java:1546)robertlee。资源EcgCloudDatabase。getApk(EcgCloudDatabase.java:691)sun。反映NativeMethodAccessorImpl。invoke0(本机方法)sun。反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:57)sun。反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.java:43)java。lang.reflect。方法调用(Method.java:606)com。太阳运动衫spi。容器JavaMethodInvokerFactory 1美元。调用(JavaMethodInvokerFactory.java:60)com。太阳运动衫服务器实施。模型方法派遣AbstractResourceMethodDispatchProvider$ResponseOutInvoker_dispatch(AbstractResourceMethodDispatchProvider.java:205)com。太阳运动衫服务器实施。模型方法派遣ResourceJavaMethodDispatcher。dispatch(ResourceJavaMethodDispatcher.java:75)com。太阳运动衫服务器实施。uri。规则。HttpMethodRule。接受(HttpMethodRule.java:302)com。太阳运动衫服务器实施。uri。规则。RightHandPathRule。接受(RightHandPathRule.java:147)com。太阳运动衫服务器实施。uri。规则。ResourceClassRule。接受(ResourceClassRule.java:108)com。太阳运动衫服务器实施。uri。规则。RightHandPathRule。接受(RightHandPathRule.java:147)com。太阳运动衫服务器实施。uri。规则。RootResourceClassesRule。接受(rootresourceClasseRule.java:84)com。太阳运动衫服务器实施。应用WebApplicationImpl_HandlerRequest(WebApplicationImpl.java:1511)com。太阳运动衫服务器实施。应用WebApplicationImpl_HandlerRequest(WebApplicationImpl.java:1442)com。太阳运动衫服务器实施。应用WebApplicationImpl。HandlerRequest(WebApplicationImpl.java:1391)com。太阳运动衫服务器实施。应用WebApplicationImpl。HandlerRequest(WebApplicationImpl.java:1381)com。太阳运动衫spi。容器servlet。网络组件。服务(WebComponent.java:416)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:538)com。太阳运动衫spi。容器servlet。ServletContainer。服务(ServletContainer.java:716)javax。servlet。http。HttpServlet。服务(HttpServlet.java:722)注意,根本原因的完整堆栈跟踪可在Apache Tomcat/7.0.26日志中找到。

Apache Tomcat/7.0.26

请帮忙,非常感谢......

共有1个答案

柴瀚
2023-03-14

您需要在WEB-INF/lib中包含包含类robertlee/Resources/EcgCloudDatabase的jar并重新创建您的部署

 类似资料:
  • 我正在使用ApacheTomcat7.0和eclipse创建一个jersey应用程序。我在eclipse中创建了一个动态web项目,并将资源文件定义为:- 网状物xml文件也创建如下- 以下jar文件已添加到web inf中的lib文件夹中,并且在部署war文件后,也将以目录结构出现在web应用程序中。 一旦启动tomcat并部署war文件,就会出现以下错误: org.apache.catalin

  • 我已经为此挣扎了几天,现在无法找到一个合适的解决方案。我读过类似的问题,但没有一个解决方案是充分的。 我的规格:Tomcat 9.0.0。M22,泽西2.25.1,马文4.0.0,智能2017.1.4。 让我绞尽脑汁的是,我可以在一个公共静态void main(){}函数中毫无障碍地运行代码。我想这意味着我的jar被Maven正确地包含了进去。但是,当我试图通过ServletContextList

  • 我使用的是一个restful web服务,CRUD操作可以在其中工作,除了在一个页面上列出每个用户。getUser()方法仅用于登录webapp。我已经看了这个问题,但我没有使用命名查询。 我得到的错误:: 严重:产生媒体类型冲突。资源方法public…UserResource.getUser()和…UserResource.list()抛出org.codehaus.jackson.JsonGen

  • 我正在创建一个API上传文件使用泽西。 } } 当我执行curl-v-X POST时——form file=@rt.txt url 我哪里做错了?

  • 有人成功部署了Jersey 2吗。带JBoss 7的x。x?我曾尝试在JBoss 7.1.1中部署Jersey 2.5,但遇到以下错误: 我认为这个问题是因为JBoss与RestEasy捆绑在一起,RestEasy是一个JAX-RS 1.0实现,而Jersey是一个JAX-RS 2.0实现。因此,我采取以下步骤禁用RestEasy: 1)在我的web.xml中添加了以下内容: 2)按照这里的讨论,

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?