getServletContext NullPointerException

Ich weiß, diese Frage wurde gebeten, eine million mal, und es gibt 5-Millionen-Antworten - einige oder die sind sehr informativ. Keiner von denen hat dieses problem gelöst.

Mein Ziel ist ähnlich wie viele andere - ich möchte den Zugriff auf Dateien - Bilder, svgfiles, Vorlagen, etc. in der web-app run-time-Umgebung. Ich kann es funktionieren, wenn ich einfach hart verdrahten Sie den Verzeichnis-Pfad. Allerdings würde ich gerne meine servlet-tragbare und einen relativen Bezug verwenden, um auf diese Ressourcen zugreifen -wenn aus keinem anderen Grund entwickle ich in Windows und Implementierung in Linux.

Das grundlegende problem ist, dass getServletContext() ist null und ich bin nicht in der Lage zu bestimmen,, warum.

Unten ist die Fehlermeldung, der code, den es produziert, gefolgt von Umwelt details. Produziert die gleichen Fehler in Entwicklung und Produktion. Ich werde glücklich sein, um etwaige zusätzliche details wenn gewünscht.

Bitte erklären was ich tun muss, damit dies funktioniert? Ich werde ewig dankbar sein. Hinsichtlich

     SEVERE: Servlet.service() for servlet [jsp] in context with path [/HelloWorld] threw exception [An exception occurred processing JSP page /hello.jsp at line 19

     16: <title>Hello World</title>
     17: </head>
     18: <body>
     19:  <%=wtGreet.getGreeting()%> 
     20: </body>
     21: </html>


    Stacktrace:] with root cause
    java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
at HelloWorld.Greeting.getGreeting(Greeting.java:23)
at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:91)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

HelloWorld-Anwendung arbeiten - erzeugt unerwünschte Fehler - genau das gleiche wie die Reale Sache.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF 8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="wtGreet" scope="page"
class="HelloWorld.Greeting">
<jsp:setProperty name="wtGreet" property="who" value="World"/>
<jsp:setProperty name="wtGreet" property="greet" value="Hello"/>
</jsp:useBean> 
<jsp:setProperty name="wtGreet" property="*"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello World</title>
</head>
<body>
 <%=wtGreet.getGreeting()%>
</body>
</html>

Dann Servlet, das die jsp aufruft,

package HelloWorld;

import javax.servlet.http.HttpServlet;

public class Greeting extends HttpServlet {

    private static final long serialVersionUID = 1298516959968350334L;
    private String who;
    private String greet;

    public void setWho(String who) {
        this.who = who;
    }

    public void setGreet(String greet) {
        this.greet = greet;
    }

    public String getGreeting() {
        System.out.println("getServletContext() == null :" + getServletContext().getContextPath());
        return "<p>" + this.greet + " " + this.who + "</P>";
    }
}

Entwicklungsumgebung
Windows
Eclipse JEE
Apache
Tomcat 7
JRE 7

Produktionsumgebung
Linux
Apache
Tomcat 7
JRE 8

InformationsquelleAutor Threadid | 2013-11-04
Schreibe einen Kommentar