简体   繁体   English

在Tomcat上实现Jersey时出现“ javax.servlet.ServletException:java.lang.NoClassDefFoundError”

[英]“javax.servlet.ServletException: java.lang.NoClassDefFoundError” when implementing Jersey on Tomcat

When I tried to implement the method below on Tomcat on a Linux server using("sudo service tomcat7 start"), all the other methods work fine except this one. 当我尝试使用(“ sudo service tomcat7 start”)在Linux服务器上的Tomcat上实现以下方法时,除此方法外,所有其他方法均能正常工作。

@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();
    }

What's weird is that when I "Run on server" in Eclipse, this method works fine. 奇怪的是,当我在Eclipse中“在服务器上运行”时,此方法可以正常工作。

Below are the error messages I got: 以下是我收到的错误消息:

HTTP Status 500 - HTTP状态500-

type Exception report 类型例外报告

message 信息

description The server encountered an internal error () that prevented it from fulfilling this request. 描述服务器遇到内部错误(),导致服务器无法满足此请求。

exception 例外

javax.servlet.ServletException: java.lang.NoClassDefFoundError: robertlee/resource/EcgCloudDatabase$1 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause javax.servlet.ServletException:java.lang.NoClassDefFoundError:robertlee / resource / EcgCloudDatabase $ 1 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)com.sun.jersey.spi.container。 servlet.ServletContainer.service(ServletContainer.java:538)com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)javax.servlet.http.HttpServlet.service(HttpServlet.java:722)根本原因

java.lang.NoClassDefFoundError: robertlee/resource/EcgCloudDatabase$1 robertlee.resource.EcgCloudDatabase.getApk(EcgCloudDatabase.java:691) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.imp java.lang.NoClassDefFoundError:robertlee / resource / EcgCloudDatabase $ 1 robertlee.resource.EcgCloudDatabase.getApk(EcgCloudDatabase.java:691)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethod) )sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:606)com.sun.jersey.spi.container.JavaMethodInvokerFactory $ 1.invoke(JavaMethodInvokerFactory.java: 60)com.sun.jersey.server.impl.model.method.dispatch.Abs​​tractResourceMethodDispatchProvider $ ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch( ResourceJavaMethodDispatcher.java:75)com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule。 java:147)com.sun.jersey.server.imp l.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause l.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)com.sun.jersey.server.impl。 uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)com.sun.jersey.server.impl.application.WebApplicationImpl。 _handleRequest(WebApplicationImpl.java:1442)com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java: 1381)com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)com.sun。 jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)javax.servlet.http.HttpServlet.service(HttpServlet.java:722)根本原因

java.lang.ClassNotFoundException: robertlee.resource.EcgCloudDatabase$1 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) robertlee.resource.EcgCloudDatabase.getApk(EcgCloudDatabase.java:691) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) com.sun.jersey.server.impl.ur java.lang.ClassNotFoundException:robertlee.resource.EcgCloudDatabase $ 1 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)robertlee。 resource.EcgCloudDatabase.getApk(EcgCloudDatabase.java:691)sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod:43) )java.lang.reflect.Method.invoke(Method.java:606)com.sun.jersey.spi.container.JavaMethodInvokerFactory $ 1.invoke(JavaMethodInvokerFactory.java:60)com.sun.jersey.server.impl.model。 method.dispatch.Abs​​tractResourceMethodDispatchProvider $ ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)com.sun.jersey.server。内含 i.rules.HttpMethodRule.accept(HttpMethodRule.java:302) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java i.rules.HttpMethodRule.accept(HttpMethodRule.java:302)com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)com.sun.jersey.server.impl.uri。 rules.ResourceClassRule.accept(ResourceClassRule.java:108)com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)com.sun.jersey.server.impl.uri.rules。 RootResourceClassesRule.accept(RootResourceClassesRule.java:84)com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl。 java:1442)com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)com。 sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java :538) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs. :538)com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)javax.servlet.http.HttpServlet.service(HttpServlet.java:722)注意根本原因的完整堆栈跟踪在Apache Tomcat / 7.0.26日志中可用。

Apache Tomcat/7.0.26 Apache Tomcat / 7.0.26

Please help, thanks so much.... 请帮助,非常感谢。

您需要在WEB-INF / lib中包含包含类robertlee/resource/EcgCloudDatabase的jar,然后重新创建部署。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javax.servlet.ServletException:java.lang.NoClassDefFoundError:JspException - javax.servlet.ServletException: java.lang.NoClassDefFoundError: JspException javax.servlet.ServletException:org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:org / json / JSONObject - javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/json/JSONObject javax.servlet.ServletException:java.lang.NoClassDefFoundError:javax / servlet / jsp / jstl / core / ConditionalTagSupport - javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport javax.servlet.ServletException:java.lang.NoClassDefFoundError:javax / servlet / ServletInputStream - javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream javax.servlet.ServletException:java.lang.NoClassDefFoundError:org / apache / commons / dbcp / ConnectionFactory - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/dbcp/ConnectionFactory javax.servlet.ServletException:java.lang.NoClassDefFoundError:org / apache / commons / pool / KeyedObjectPoolFactory - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory JSP Web 应用程序:javax.servlet.ServletException:java.lang.NoClassDefFoundError: - JSP web application :javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax.servlet.ServletException:com.vaadin.server.ServiceException:java.lang.NoClassDefFoundError - javax.servlet.ServletException: com.vaadin.server.ServiceException: java.lang.NoClassDefFoundError javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/mysql/jdbc/Driver - javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/mysql/jdbc/Driver javax.servlet.ServletException:java.lang.NoClassDefFoundError:org / jdom2 / input / SAXBuilder - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/jdom2/input/SAXBuilder
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM