Null.Pointer.Exception в моем веб-приложении - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь создать веб-приложение, которое запрашивает мою базу данных Oracle и возвращает список заголовков меню из таблицы, но когда я перехожу на страницу, она выбрасывает область, показанную ниже.

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException
oracle.DatabaseConnector.selectAllMenus(DatabaseConnector.java:63)
org.apache.jsp.menus_jsp._jspService(menus_jsp.java:113)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

Ниже приведена оскорбительная часть кода внутри моего Java-класса, который запрашивает базу данных. Но я не уверен, почему это вызвало бы вышеуказанную ошибку? Может кто-то взглянуть и посмотреть, если есть проблема?

public MenuList selectAllMenus(String ordering) {
    MenuList list = null;

    try {
        String strQuery = "SELECT title"
                + " FROM menus"
                + " ORDER BY " + ordering;
        PreparedStatement stmt = conn.prepareStatement(strQuery);

        results = stmt.executeQuery();

        list = new MenuList(results);
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return list;
}

Это то, что было в файле журнала:

28-Feb-2012 14:40:57 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at oracle.DatabaseConnector.selectAllMenus(DatabaseConnector.java:63)
at org.apache.jsp.menus_jsp._jspService(menus_jsp.java:113)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
at java.lang.Thread.run(Thread.java:662)

Ответы [ 4 ]

2 голосов
/ 12 декабря 2012

Надеюсь, вы используете БД MySQL ..

Убедитесь, что вы добавили правильный MySQL Java Connector в качестве внешней библиотеки, а также добавили Tomcat в качестве внешнего сервера (в пути сборки проекта в Eclipse).

(Вы также можете скопировать все библиотеки в папке lib вашего $ TOMCAT_HOME / $ CATALINA_HOME в ваш путь сборки.

Это должно решить эту проблему.

Спасибо.

1 голос
/ 28 февраля 2012

Вы можете посмотреть в своих журналах: Apache Tomcat/6.0.35 logs

Но само сообщение об ошибке довольно ясно: соединение с БД пустое, возможно, ваша строка / параметры соединения неверны.

0 голосов
/ 29 февраля 2012

строка:

PreparedStatement stmt = conn.prepareStatement(strQuery);

"conn" не создается ни в каком месте

попробуйте что-то подобное, чтобы создать соединение:

public class MyConnection {
Connection conn;
String username;
String password;
public Connection getConnection(){
    try {
        String url = "jdbc:mysql://localhost/yourDBName?";
        Class.forName("com.mysql.jdbc.Driver");
        try {
            conn = (Connection) DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
        System.out.println(e);
        }

    } catch (SQLException e) {
        System.out.println(e);
    }
    return conn;
}

}
0 голосов
/ 28 февраля 2012

Я предполагаю, что conn открыто.

Вместо того, чтобы печатать трассировку стека, почему бы вам не напечатать сообщение об ошибке?

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