【问题标题】:Why when I deploy a javaweb app (war) on heroku I get the error 404 and error 500?为什么当我在 heroku 上部署 java web 应用程序 (war) 时出现错误 404 和错误 500?
【发布时间】:2022-07-07 19:35:03
【问题描述】:

我正在使用 Heroku 测试这个简单的应用程序,它是一个注册表。当我在 Eclipse 服务器上运行它时,我没有问题,它可以正确注册。但是,在 heroku 上部署它并提交给 servlet 时,我遇到了 2 个错误。

Servlet 代码:

    @WebServlet("/Servlet")
    public class Servlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Servlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws 

    ServletException, IOException {
                // TODO Auto-generated method stub
                //response.getWriter().append("Served at: ").append(request.getContextPath());
                //Conexion.Conectar();
                boolean crear = create(request.getParameter("correo"),request.getParameter("nombre_usuario"),request.getParameter("pass"));
                //System.out.println(creado);
                
                if(crear){
                    request.getRequestDispatcher("correcto.jsp").forward(request, response);
                    System.out.println("ok");
                }else {
                    request.getRequestDispatcher("index.jsp").forward(request, response);
                    System.out.println("mal");
                }
                //System.out.println("ok");
            }
        
            /**
             * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
             */
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
                doGet(request, response);
            }
            
            
            
            public boolean create(String correo, String nombre_usu, String password) {
                boolean creado = false;
                Connection con = null;
                PreparedStatement ps = null;
                try{
                                
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    con = DriverManager.getConnection("jdbc:mysql://XXXXXX","XXXXXXX","XXXXXXXXX");
                    String sql = "INSERT INTO usuarios (correo,nombre_usuario,clave) VALUES (?,?,?)";
                    System.out.println("Conexion bn");
                    ps = con.prepareStatement(sql);
                    ps.setString(1, correo);
                    ps.setString(2, nombre_usu);
                    ps.setString(3, password);
                    creado = ps.execute;
                
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    try {
                        ps.close();
                        con.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                return creado;
            }
        }

错误

1)我第一次运行部署的应用程序时,我得到了这个:

enter image description here

  1. 然后我做同样的事情,应用程序显示: https://imgur.com/UnH6vI2

我的项目 https://imgur.com/NtK5il6

https://imgur.com/lq96kn0

index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>Formulario</h1>
        <form action="Servlet" method="GET">
            Correo <input type="text" name="correo"> <br><br>
            Nombre de usuario <input type="text" name="nombre_usuario"> <br><br>
            Contraseña <input type="text" name="pass"> <br><br> 
            <input type="submit" value="Registrarse">
        </form>
    </body>
    </html>

根据我的调查,这可能是由于本文https://es.stackoverflow.com/questions/320688/como-utilizar-las-rutas-relativas-en-javaee-para-war-en-hosting 中讨论的路线造成的,但是,我已经尝试过,但它仍然不起作用。

【问题讨论】:

    标签: java heroku servlets war


    【解决方案1】:

    关于类版本的第一条错误消息意味着您使用的 Java 版本比您用来编译它的版本旧:

    • Java 类版本 60 是 Java 16 — 这可能是您用来编译的;
    • Java 类版本 52 是 Java 8 — 这是您用于在 Heroku 上运行它的版本。

    因此,您应该使用 Java 8 构建您的应用,或者将您在 Heroku 上使用的 Java 版本更新到至少 16。

    第二个错误很可能是因为第一个错误导致您的应用程序没有正确部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2021-03-25
      • 1970-01-01
      • 2016-04-10
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多