Exception-" java.lang.NullPointerException: Module 'null' not found " in Java-Struts 1.3

38,938

Solution 1

It could be for multiple reasons. Check here

Extract from the link,

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

Solution 2

My issue appeared on the struts application having in pom.xml maven-compiler-plugin with setting source/target to 1.7 -> reset it to 1.5/1.6 it fixed my issue (building was done with Java 7). This application was deployed on Tomcat 7 but using java 6. Maybe it could help somebody...

Solution 3

Give load on startup as 1 to ActionServlet in web.xml. this myt fix problem.

Solution 4

Verify if the TomCat Server must be run under JDK 1.7. Don't forget restart the server after the change.

Share:
38,938
suraj_fale
Author by

suraj_fale

Senior Software Developer/AVP http://surajfale.com

Updated on July 05, 2022

Comments

  • suraj_fale
    suraj_fale almost 2 years

    While deplyoing Struts 1.3 Login application on localhost 8080 (Apache Tomcat 6.0.16 Server). I am getting following error.

    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: An exception occurred processing JSP page /Login.jsp at line 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"/>
    

    Stacktrace:

    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)
    

    root cause

    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)
    

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


    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);
    
            }
        }
    }