在将我的war文件(包含jsp,它调用tomcat项目类)部署到AWS Elastic beantalk之后,我收到javax.servlet.ServletException: java.lang.NoClassDefFoundError:
。
我的index.jsp:
<%@page import="SUPPORT.Constants"%>
<!DOCTYPE html>`
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<head>
<title>Create google AdWords session</title>
<!--<meta charset="UTF-16LE">-->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- <link rel="stylesheet" type="text/css" href="CSS/stylesheet.css"> -->
</head>
<body>
<%=Constants.getWelcome()%>
</body>
在 Projects 选项卡的NetBeans 源包部分中,我有SUPPORT
包,其中包含名为Constants
的类。
此类具有一个方法:
public String getWelcome()
{return "Hello World";}
它看起来像这样:
package SUPPORT;
public class Constants
{
public static String getWelcome()
{return "Hello World";}
}
代码在本地运行良好,但是在AWS上部署ti Elastic beanStalk之后,出现以下错误500:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing [/index.jsp] at line [20]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [/index.jsp] at line [20]
19: <body>
20: <%=Constants.getWelcome()%>
21: </body>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class SUPPORT.Constants
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
org.apache.jsp.index_jsp._jspService(index_jsp.java:146)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NoClassDefFoundError: Could not initialize class SUPPORT.Constants
org.apache.jsp.index_jsp._jspService(index_jsp.java:130)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.
另外:
当我在AWS上使用Tomcat 8.0.27部署服务时没有发生此问题。
切换到Tomcat 8.5.51后,我开始出现此问题(仅在AWS上-代码在本地运行良好-我的计算机上没有问题)。
我的AWS tomcat版本在Elastic beanstalk中设置为8.5。
项目是使用Ant在Netbeans上开发和构建的(因为它是旧项目,也是我的第一个项目)。
tomcat / web服务似乎没有看到自己的类。
我使用Java 8更新241。
请帮助我解决这个问题。