java.lang.NullPointerException
com.manager.action.AdminAction.add(AdminAction.java:40)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)struts.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>
  <package name="struts2" extends="struts-default">
   <action name="add" class="com.manager.action.AdminAction" method="add">
    <result name="SUCCESS" type="redirect">list.action</result>
   </action>
   
   <action name="list" class="com.manager.action.AdminAction" method="list">
   <result name="SUCCESS">/list_admin.jsp</result>
   </action>
  </package>
</struts>
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>


  <!-- DAO -->
  <bean id="adminDao" class="com.pmanager.dao.AdminDaoImpl">
   <property name="sessionFactory" >
       <ref bean="sessionFactory"/>
   </property>
  
  </bean>
  
   <!-- Services -->
  <bean id="adminService" class="com.pmanager.service.AdminServiceImpl">
    <property name="adminDao">
      <ref bean="adminDao" />
    </property>
  </bean>
  <!-- Actions -->
  <bean id="adminAction" class="com.pmanager.action.AdminAction">
    <property name="adminService">
      <ref bean="adminService"/>
    </property>
  </bean>
</beans>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration> <session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/pmanager
</property>
<property name="connection.username">root</property>
<property name="connection.password">BY</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">
com.mysql.jdbc.Driver
</property>
<mapping resource="com/manager/po/Admin.hbm.xml" /> </session-factory></hibernate-configuration>
AdminAction.java
package com.manager.action;import java.util.List;import com.manager.po.Admin;
import com.manager.service.AdminService;
import com.opensymphony.xwork2.ActionSupport;public class AdminAction extends ActionSupport{
/**
 * 
 */
private static final long serialVersionUID = -5660706618762317810L;
private Admin admin=new Admin();
private AdminService adminService;
public List<Admin> list;


public List<Admin> getList() {
return list;
}
public void setList(List<Admin> list) {
this.list = list;
}
public AdminService getAdminService() {
return adminService;
}
public void setAdminService(AdminService adminService) {
this.adminService = adminService;
}

public String list(){

this.list= this.adminService.list();
return "SUCCESS" ;

}

public String add(){
this.adminService.Add(this.admin);
return "SUCCESS";
}}

解决方案 »

  1.   


    package com.manager.action;import java.util.List;import com.manager.po.Admin;
    import com.manager.service.AdminService;
    import com.opensymphony.xwork2.ActionSupport;public class AdminAction extends ActionSupport{
    /**
     * 
     */
    private static final long serialVersionUID = -5660706618762317810L;
    private Admin admin=new Admin();
    private AdminService adminService;
    public List<Admin> list;
    public List<Admin> getList() {
    return list;
    }
    public void setList(List<Admin> list) {
    this.list = list;
    }
    public AdminService getAdminService() {
    return adminService;
    }
    public void setAdminService(AdminService adminService) {
    this.adminService = adminService;
    }public String list(){this.list= this.adminService.list();
    return "SUCCESS" ;}public String add(){
    this.adminService.Add(this.admin);
    return "SUCCESS";
    }}
      

  2.   

    -40行看看是this.adminService为空还是this.admin为空~
      

  3.   

    你用debug啊,用工具去设置一个断点。。很简单就能调试了同学、
      

  4.   


    adminService=null;
    bean组件不是由spring容器管理的吗?为什么会是空?如何解决啊?
      

  5.   


    看你的配置,似乎是Struts的ActionServlet没有由Spring容器托管吧。。
    所以当请求进来的时候,走的是Struts的框架的路线,没经过Spring啊
      

  6.   


    也就是Struts和Spring没整合到一起~~
      

  7.   

    当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。 
    访问或修改 null 对象的字段。 
    将 null 作为一个数组,获得其长度。 
    将 null 作为一个数组,访问或修改其时间片。 
    将 null 作为 Throwable 值抛出。 
    应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。
      

  8.   

    最大的可能性,action没有交给spring管理,所以你的service对象为空,你需要在spring的配置文件中定义action的bean,同时在struts.xml文件中配置action时,action的class属性必须是spring配置文件中你配置的的action的id,这样在你的action类中通过依赖注入就可以获得service的对象了,别忘了导入struts2-spring-plugin.jar,ObjectFactory默认就是spring,不需要修改