2010-08-05 80 views
1

在使用這些框架幾年後,我有第一個JSP頁面。看來我不知道如何編寫JSP程序了。JSP問題,第一個JSP錯誤

我使用的是windows,tomcat 6.0.29,代碼已附加。我有以下錯誤。然後我檢查編譯的hello_jsp,第22行指向幾行。我在classpath中有el-api.jar,jasper-el.jar。即使我在jsp頁面評論java部分,它也有相同的錯誤。我的web.xml有什麼問題嗎?

hello_jsp:

public void _jspInit() { 
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); 
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName()); 
    } 



java.lang.NullPointerException 
     org.apache.jsp.jsp.hello_jsp._jspInit(hello_jsp.java:22) 
     org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) 
     org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) 
     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) 

的hello.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<jsp:useBean id="hello" scope="session" class="com.juhani.uml.test.webapp.jsp.HelloTest" /> 

Let's say: <%= hello.getGreetings() %> 


</body> 
</html> 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

<display-name>Simple UML Tool Test</display-name> 

    <servlet> 
<servlet-name>HelloWorld</servlet-name> 
<servlet-class>com.juhani.uml.test.webapp.HelloWorld</servlet-class> 
<load-on-startup>0</load-on-startup> 
</servlet> 

    <servlet-mapping> 
<servlet-name>HelloWorld</servlet-name> 
<url-pattern>/helloworld</url-pattern> 
</servlet-mapping> 

    <session-config> 
<session-timeout>30</session-timeout> 
</session-config> 

<!-- 
    <taglib> 
<taglib-uri>/com/sun/web/taglibs/cache</taglib-uri> 
<taglib-location>/WEB-INF/sun-web-cache.tld</taglib-location> 
</taglib> 
--> 

</web-app> 

回答

0

您的問題是您將服務器特定的庫複製到您的/WEB-INF/lib中,因爲它似乎解決了編譯錯誤。然而,這是錯誤的解決方案。在運行時您仍然會遇到麻煩,因爲/WEB-INF/lib中的庫優先於類加載,並且由於位置錯誤,某些必需的東西丟失,一切都會中斷。

您應該將那些服務器特定的庫保留在原來所屬的位置,而不是移動/複製它們。您只需將其磁盤文件系統路徑包含在編譯時類路徑中即可。平均IDE(Eclipse,Netbeans等)可以通過單擊完成。

+0

謝謝。你是絕對正確的!!! – user84592 2010-08-13 12:38:47

+0

不客氣。 – BalusC 2010-08-13 12:41:54

0

我讓它工作了。我從war文件中排除servlet-api.jar。我之所以想到這一點,是因爲我將.jsp文件移動到了tomcat根目錄。然後它工作。