首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java.lang.NullPointerException解决方法

2013-01-25 
java.lang.NullPointerExceptionjava.lang.NullPointerExceptioncom.manager.action.AdminAction.add(Admi

java.lang.NullPointerException
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";
}

}


[解决办法]


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

}


[解决办法]
引用:
Java code?1234567891011121314151617181920212223242526272829303132333435363738394041424344package com.manager.action; import java.util.List; import com.manager.po.Admin;import com.manager.……

-40行看看是this.adminService为空还是this.admin为空~
[解决办法]
你用debug啊,用工具去设置一个断点。。很简单就能调试了。。。同学、
[解决办法]
引用:
引用:引用:Java code?1234567891011121314151617181920212223242526272829303132333435363738394041424344package com.manager.action; import java.util.List; import co……


看你的配置,似乎是Struts的ActionServlet没有由Spring容器托管吧。。
所以当请求进来的时候,走的是Struts的框架的路线,没经过Spring啊
[解决办法]
引用:
引用:引用:引用:Java code?1234567891011121314151617181920212223242526272829303132333435363738394041424344package com.manager.action; import java.u……


也就是Struts和Spring没整合到一起~~
[解决办法]
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 

调用 null 对象的实例方法。 
访问或修改 null 对象的字段。 
将 null 作为一个数组,获得其长度。 
将 null 作为一个数组,访问或修改其时间片。 
将 null 作为 Throwable 值抛出。 
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。


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

热点排行
Bad Request.