2011-02-03 26 views
5

Tôi có ứng dụng mvc mùa xuân với trang jsp giả (tên htmlcontent.jsp). Jsp chỉ chứa một chuỗi:java.lang.NullPointerException tại org.apache.jsp.foo_jsp._jspInit (foo_jsp.java:22)

HalloText 

và đây là toàn bộ nội dung của jsp. Bộ điều khiển trông như sau:

package springapp.web; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class HtmlContentController { 

    @RequestMapping("/htmlcontent.htm") 
    public String view() { 
     return "htmlcontent"; 
    } 
} 

bean được thêm vào trong tôi springapp-web.xml

<bean id="htmlcontent" class="springapp.web.HtmlContentController"> 

Và ánh xạ servlet trong web.xml của tôi được định nghĩa như sau:

<servlet-mapping> 
    <servlet-name>springapp</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

Khi tôi gọi sau:

http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm 

sau đó tôi nhận được một NullPointerException:

HTTP Status 500 - 

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:536) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) 
    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) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

root cause 

java.lang.NullPointerException 
    org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22) 
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) 
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338) 
    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) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    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.30 logs. 

Trong catalina.out không có bất kỳ dấu vết ngăn xếp cho lỗi này. Khi tôi cố gắng thay đổi URL thành http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm, thì tôi nhận được:

WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp' 

Vì vậy, tôi nghĩ rằng đó phải là tệp nhật ký phù hợp. Ai đó có thể cho tôi một gợi ý, những gì tôi đang làm sai? Và tại sao dấu vết ngăn xếp con trỏ null không có trong tệp nhật ký?

+0

phiên bản nào của tomcat này? – skaffman

+0

Nếu bạn đánh dấu bộ điều khiển bằng @Controller thì bạn không cần đăng ký bean trong tệp springapp-web.xml. Bạn có thể đăng cách bạn đã định cấu hình Trình giải quyết Chế độ xem của mình không? Và tôi nghĩ rằng url bạn phải sử dụng là http: // localhost: 8080/htmlcontent.htm thay vì url bạn đang sử dụng. – Javi

+1

khi tôi gọi localhost: 8080/htmlcontent.htm, sau đó tôi nhận được lỗi 404 (Tài nguyên được yêu cầu (/htmlcontent.htm) không có sẵn. ") – cupakob

Trả lời

21
java.lang.NullPointerException 
    org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22) 

Phương thức NPE trong phương thức _jspInit() cho biết mức độ nhiễm classpath với các thư viện JSP có phiên bản cũ và cũ hơn so với hiện bạn đang chạy.

Để sửa lỗi này, bạn cần phải đảm bảo rằng bạn làm không có bất kỳ servletcontainer thư viện cụ thể như jsp-api.jar, servlet-api.jar, el-api.jar, vv trong của /WEB-INF/lib và chắc chắn webapp của bạn không trong JRE của JRE/libJRE/lib/ext.

Các thư viện riêng của servletcontainer thuộc về chính servletcontainer (trong Tomcat 6, chúng nằm trong thư mục Tomcat/lib), bạn sẽ không bao giờ chạm vào chúng và không có bản sao của chúng hoặc một servletcontainer khác ở bất kỳ đâu trong classpath của bạn.

+0

đó là vấn đề ... :) cảm ơn – cupakob

+0

Bạn được chào đón. – BalusC

+1

lạ mà sts mẫu bao gồm jar's này.Tôi đã phải xóa chúng từ pom.xml để làm cho nó hoạt động – Fixus

Các vấn đề liên quan