type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.IllegalAccessException: Class org.apache.struts.config.FormBeanConfig can not access a member of class com.struts.actionform.HelloActionForm with modifiers ""
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.IllegalAccessException: Class org.apache.struts.config.FormBeanConfig can not access a member of class com.struts.actionform.HelloActionForm with modifiers ""
sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:357)
org.apache.struts.chain.commands.CreateActionForm.execute(CreateActionForm.java:92)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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.33 logs.

解决方案 »

  1.   

    这是发出请求的页面hello.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'hello.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  </head>
      
      <body>
      <b>the following is a table of username</b>
      <hr>
      
      <div style="color;red;"><html:errors/></div>
      <form name="hello_form" method="post" action="hello.do">
       Username:
       <input type="text" name="Username" >
       <input type="submit" value="Submit">
      </form>
      <hr>
      
      
      </body>
    </html>
      

  2.   

    actionform类package com.struts.actionform;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;public class HelloActionForm extends ActionForm {

    private String name;

    //null constructor
    HelloActionForm(){


    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } @Override
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {

    ActionErrors errors = new ActionErrors();

    if(name.equals(null)){
    errors.add("hello_errors", new ActionMessage("errorsNameNull"));

    }

    System.out.print(name);
    if(errors.isEmpty())
    return null;
    else
    return errors;


    }







    }
      

  3.   

    action类
    package com.struts.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.apache.struts.action.ActionMessage;
    import org.apache.struts.action.ActionMessages;import com.struts.actionform.HelloActionForm;public class HelloAction extends Action { @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    HelloActionForm haf = (HelloActionForm) form;

    ActionMessages errors = new ActionMessages();

    if(haf.getName().equals("god")){
    errors.add("nameInvalid", new ActionMessage("nameGodError"));
    this.saveErrors(request, errors);
    return mapping.findForward("failure");
    }
    else return mapping.findForward("success");


    }



    }
      

  4.   

    你的struts-config.xml怎么没有贴出来,我估计是你的这个配置文件有错误!
      

  5.   

    java.lang.IllegalAccessException 
    这个异常的解释是 "没有访问权限 ",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常。com.struts.actionform.HelloActionForm 
    struts配置文件配置了嘛、
      

  6.   

    把com.struts.actionform.HelloActionForm 这个类的构造器范围方程共有的public,你是默认的,只有同一个包中才能访问,而struts的包读写文件与你的类不在同一个包,就会包访问权限问题。
      

  7.   

    刚才不允许连续写三个帖子我现在发我的配置文件<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
      <form-beans >
       <form-bean name="hello_form" type="com.struts.actionform.HelloActionForm" />
      </form-beans>
      
     
      
      <global-exceptions />
      <global-forwards />
      <action-mappings>
      <action
         path="/hello"
         type="com.struts.action.HelloAction"
         name="hello_form"
         scope="request"
         input="/hello.jsp"
         validate="true">
         <forward name="success" path="/OK.jsp" />
         <forward name="failure" path="/Fail.jsp" />
         </action>
      
      
      </action-mappings>
      <message-resources parameter="ApplicationResources" />
    </struts-config>
    下面的是web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <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>
        <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
        </init-param>
        <init-param>
          <param-name>detail</param-name>
          <param-value>3</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  8.   

    我又重新建了个工程,不采用自己导入struts-config.xml,而采用开发环境自动生成的配置文件,又重新写了一遍。现在又报这个错了,不解啊HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause java.lang.NullPointerException
    com.struts.actionform.HelloActionForm.validate(HelloActionForm.java:34)
    org.apache.struts.chain.commands.servlet.ValidateActionForm.validate(ValidateActionForm.java:58)
    org.apache.struts.chain.commands.AbstractValidateActionForm.execute(AbstractValidateActionForm.java:120)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    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.33 logs.
      

  9.   

    大哥你学的是struts1??怎么action和配置文件都跟我学的有蛮大区别的
      

  10.   

    听懂了8#的意思,我将构造函数改成了public权限,这样之后的报错一直像10#的情况,报的空指针错误
      

  11.   

    是的,我刚开始学,先看的struts1,想先弄清楚MVC,之后再struts2
      

  12.   

    终于发现问题了,在Username.equals(null)处,将它改为Username==null就可以了
      

  13.   

    应该缺少jar包,好好检查一下吧