Почему это исключение Java? - PullRequest
       1

Почему это исключение Java?

0 голосов
/ 18 декабря 2011

Я изучаю сервлеты и пытаюсь создать небольшую программу, чтобы провести час в классе, который я создал.Но я получаю исключение.Вот код:

Пользователь

package Business;

public class User {

    private String userId;

    public User() {
        userId = "";
    }

    public User(String id) {
        userId = id;
    }

    public void setUserId(String id) {
        userId = id;
    }

    public String getUserId() {
        return userId;
    }

}

Часы

package Business;

import java.util.Calendar;
import java.util.GregorianCalendar;

import business.User;

public class Hours {

    private User user;
    private Calendar cal = new GregorianCalendar();
    private int min = 0;

    public Hours(User user) {
        this.user = user;
        min = cal.get(Calendar.MINUTE);
    }

    public String getMinutes() {
        return Integer.toString(min);
    }

    public User getUser() {
        return user;
    }

}

CheckUser

package process;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Business.User;
import Business.Hours;

public class CheckUser extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String userId = request.getParameter("userID");
        User user1 = new User(userId);
        Hours h1 = new Hours(user1);
        String url = "/show.jsp";

        request.setAttribute("hours", h1);

        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
        dispatcher.forward(request, response);

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String userId = request.getParameter("userID");
        User user1 = new User(userId);
        Hours h1 = new Hours(user1);
        String url = "/show.jsp";

        request.setAttribute("hours", h1);

        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String userId = request.getParameter("userID");
        User user1 = new User(userId);
        Hours h1 = new Hours(user1);
        String url = "/show.jsp";

        request.setAttribute("hours", h1);

        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }

}

Индекс

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Project</title>
    </head>
    <body>
        <h1>Employees</h1>
        <form action="<%=response.encodeURL("CheckUser")%>" method="get">
            <input type="submit" value="Diogo">
            <input type="hidden" name="userId" value="1">
        </form>
    </body>
</html>

Показать

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@ page import="Business.*, process.*" %>

        <%
            Hours h1 = (Hours) request.getAttribute("hours");
            String userId =h1.getUser().getUserId();
        %>
        <h1><%= userId %></h1>
    </body>
</html>

Исключение

тип Отчет об исключении

сообщение

описание Сервер обнаружил внутреннюю ошибку (), которая помешала емувыполнение этого запроса.

исключение

java.lang.RuntimeException: некомпилируемый исходный код - ошибочный тип ctor sym: process.CheckUser.doGet (CheckUser.java:37) javax.servlet.http.HttpServlet.service (HttpServlet.java:621) javax.servlet.http.HttpServlet.service (HttpServlet.java:722) note Примечание Полная трассировка стека основной причины доступна в журналах Apache Tomcat / 7.0.23.

Ответы [ 5 ]

3 голосов
/ 18 декабря 2011

Вы получаете исключение, потому что вы развернули и попытались выполнить код с ошибкой компиляции.

И я подозреваю, что ошибка компиляции происходит из-за этой строки:

import business.User;

потому что вы фактически объявили класс User в пакете Business, а не в пакете business.


У меня такое чувство, что вы застрелились, игнорируя соглашения об именах Java:

  • Имена пакетов должны быть строчными.
  • Имя пакета должно начинаться со строки, которая однозначно идентифицирует ваш «бизнес», чтобы минимизировать риск того, что ваши имена пакетов / классов будут конфликтовать с кем-либо еще. Условно это обратное DNS-имя
1 голос
/ 18 декабря 2011

ваш пакет package Business;, но Hours класс, который вы использовали import business.User; помните, что пакет чувствителен к регистру и в соответствии со стандартом он должен быть в нижнем регистре

1 голос
/ 18 декабря 2011

В process.CheckUser вы создаете Business.User , но в вашем Business.Hour вам требуется business.User . Обратите внимание на другой случай в бизнесе и бизнесе.

1 голос
/ 18 декабря 2011

Единственное, что я могу видеть, что может быть неправильным, это то, что в Hours.java вы импортируете класс business.User, но в CheckUser.java вы используете класс Business.User.

Java чувствительна к регистру. Это два разных класса, поэтому типы в коде не совпадают.

1 голос
/ 18 декабря 2011

Вы используете два разных регистра для имен ваших пакетов:

package Business;
import business.User;

Все имена пакетов должны быть в нижнем регистре (или, по крайней мере, каждый сегмент должен начинаться со строчной буквы), чтобы следовать обычным соглашениям об именах Java.

Нормализуйте пакет business и перекомпилируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...