在AWS上部署后,Tomcat 8.5 / java代码不起作用

时间:2020-02-25 20:16:42

标签: java amazon-web-services tomcat amazon-elastic-beanstalk

在将我的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.

另外:

  1. 当我在AWS上使用Tomcat 8.0.27部署服务时没有发生此问题。

  2. 切换到Tomcat 8.5.51后,我开始出现此问题(仅在AWS上-代码在本地运行良好-我的计算机上没有问题)。

  3. 我的AWS tomcat版本在Elastic beanstalk中设置为8.5。

  4. 项目是使用Ant在Netbeans上开发和构建的(因为它是旧项目,也是我的第一个项目)。

  5. tomcat / web服务似乎没有看到自己的类。

  6. 我使用Java 8更新241。

请帮助我解决这个问题。

0 个答案:

没有答案