2012-03-21 78 views
4

在localhost 8080(Apache Tomcat 6.0.16服務器)上deplyoing Struts 1.3 Login應用程序。我得到以下錯誤。在Java-Struts 1.3中發生異常 - 「java.lang.NullPointerException:Module'null'找不到」

HTTP狀態500 -


類型異常報告

消息

描述服務器遇到一個內部錯誤()阻止其完成此請求。

例外

org.apache.jasper.JasperException:發生處理JSP頁/Login.jsp在行例外,13

10: </head> 
11: <body> 
12: 
13:  <html:form action="/Login.do"> 
14:   Username : <html:text name="LoginForm" property="userName"/><br/> 
15:   Password : <html:password name="LoginForm" property="password"/><br/> 
16:   <html:submit value="Login"/> 

堆棧跟蹤:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

根源

java.lang.NullPointerException: Module 'null' not found. 
    org.apache.struts.taglib.TagUtils.getModuleConfig(TagUtils.java:755) 
    org.apache.struts.taglib.TagUtils.getModuleConfig(TagUtils.java:735) 
    org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:818) 
    org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:488) 
    org.apache.jsp.Login_jsp._jspx_meth_html_005fform_005f0(Login_jsp.java:105) 
    org.apache.jsp.Login_jsp._jspService(Login_jsp.java:78) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

注意根源的完整堆棧跟蹤在Apache Tomcat/6.0.16日誌中可用。


的Apache Tomcat/6.0.16

的Login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 

<!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>Login Form</title> 
</head> 

<body> 
    <html:form action="/Login"> 
     Username : <html:text name="LoginForm" property="userName"/><br> 
     Password : <html:password name="LoginForm" property="password"/><br> 
     <html:submit value="Login"/> 
    </html:form> 
</body> 
</html> 

的struts-config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<struts-config> 
    <!-- ========== Form Bean Definitions ================================== --> 
    <form-beans> 
     <form-bean name="loginForm" type="org.suraj.form.LoginForm"/> 
    </form-beans> 
    <!-- ========== Action Mapping Definitions ============================= --> 
    <action-mappings> 
      <action name="loginForm" path="/Login" type="org.suraj.action.LoginAction" scope="request" input="/Login.jsp" validate="true"> 
       <forward name="failure" path="/Failure.jsp" redirect="true"/> 
       <forward name="success" path="/Success.jsp" redirect="true"/> 
      </action> 
    </action-mappings> 

</struts-config> 

Web.xml中

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

    <display-name>Login</display-name> 
    <servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class> 
      org.apache.struts.action.ActionServlet 
     </servlet-class> 

     <init-param> 
      <param-name>config</param-name> 
      <param-value>/WEB-INF/struts-config.xml</param-value> 
     </init-param> 

     <load-on-startup>2</load-on-startup>   
    </servlet> 

    <servlet-mapping> 
     <servlet-name>action</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>Login.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 

LoginForm.java

package org.suraj.form; 

import org.apache.struts.action.ActionForm; 

public class LoginForm extends ActionForm { 


    private static final long serialVersionUID = 1029546343415365160L; 
    private String userName; 
    private String password; 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 


} 

LoginAction.java

package org.suraj.action; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.struts.action.Action; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 
import org.suraj.form.LoginForm; 

public class LoginAction extends Action{ 

    private static final long serialVersionUID = -8847579600418060362L; 

    private final static String SUCCESS = "success"; 

    private final static String FAILURE = "failure"; 

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
    throws Exception { 

     LoginForm loginForm = (LoginForm) form; 

     if (loginForm.getUserName().equals(loginForm.getPassword())) { 

      return mapping.findForward(SUCCESS); 

     } else { 

      return mapping.findForward(FAILURE); 

     } 
    } 
} 

回答

5

這可能是多種原因。檢查從鏈接here

提取物,

This error occurs when you try to display a JSP before the Struts ActionServlet has been initialized and is active. The causes for this error are usually either:

  • You failed to specify 2 for the Struts ActionServlet in your web.xml file or
  • You did specify the above, but the Struts ActionServlet didn't initialize properly because of an error. Check the log file entries
    for the time period when the Server first starts up to see if it
    initialized properly or
  • You accessed a JSP page directly without going through an action
+0

重度:無法初始化的Struts的ActionServlet由於意外的異常或錯誤拋出,因此標誌着該servlet爲不可用。最有可能的是,這是由於庫依賴不正確或缺失。 java.lang.NoClassDefFoundError:組織/阿帕奇/公/連鎖/配置/ ConfigParser – SRJ 2012-03-21 05:56:48

+0

看來你缺少一個罐子公共鏈1.1.jar ......這個jar添加到庫 – 2012-03-21 06:22:09

+0

Thnaks ......因爲混合的其jar文件。 – SRJ 2012-03-21 08:16:27

0

這可能是由於網絡問題或systemconfig。問題

解決方案:

1)下載http://struts.apache.org/dtds/struts-config_1_3.dtd DTD文件,並將其複製到文件夾web-inf

2)struts-config文件Doctype標籤更改爲!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.3//EN" "**struts-config_1_3.dtd**">

1

驗證是否Tomcat服務器必須JDK 1.7下運行。不要忘記在更改後重新啓動服務器。

0

我有同樣的問題,但我找到了解決辦法是不同的。在檢查了catalina.out文件後,我意識到我從ValidatorForm擴展的類的版本有問題。最後我解決了更新jdk版本的問題。這是因爲我在開發中使用了不同的版本,而不是在tomcat中安裝的版本。

2

我的問題出現在具有在pom.xml中Maven的編譯器插件與源/目標設定爲1.7 Struts應用程序 - >重置爲1.5/1.6它固定我的問題(建築用Java 7中完成)。該應用程序部署在Tomcat 7,但使用Java 6,也許它可以幫助別人......在web.xml啓動時

1

給負載爲1至ActionServlet的。 這是一個修復問題。