项目快完工的时候,myeclipse崩溃,再打开之后所有的涉及到数据库操作的地方都是空指针异常,注入的dao在action中为空,真坑爹,好好的怎么就突然全部的dao到报空指针异常呢?
如下是我的spring配置文件
<!--配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>

<!-- 声明一个 Hibernate 3 的事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--配置事务传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 指明哪些类要使用事务 -->
<aop:config>
<aop:pointcut id="allmethod" expression="execution(* com.shiep.dao.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allmethod" />
</aop:config> <!--把接口对象dao注入action中 -->
<bean id="login" class="com.shiep.action.LoginAction">
<property name="operatorDao" ref="operatorDao"></property>
</bean> <!--声明接口对象dao -->
<bean id="operatorDao" class="com.shiep.daoImpl.OperatorDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
下面是action中
private OperatorDao operatorDao;
setter.....getter
自我感觉代码应该不会有问题,不然之前项目就没法做了,尝试着重建工程,重导入jar包,都失败了,现在就是空有好多代码,就是没法运行,唉,做了两周的程序突然来这么一下,真蛋疼Springjava eesshjava

解决方案 »

  1.   

    bliud class automacticlly 开了没。别自己写了java类,eclipse没给你利马转译成class,service只认class文件
      

  2.   

    重新编译一下工程
    1. 先刷新一下工程,(右击工程->刷新)
    2. 重新编译(project->clear)一般都没有问题了,最简单的检查方法就是看 classes/目录下有没有生成class文件
      

  3.   

    class中是有的,刚看过了,重新编译之后报如下错误
    严重: Exception invoking periodic operation: 
    java.lang.NoClassDefFoundError: org/apache/struts2/util/ObjectFactoryDestroyable
    at org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:254)
    at org.apache.struts2.dispatcher.FilterDispatcher.destroy(FilterDispatcher.java:233)
    at org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:332)
    at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:3731)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4493)
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1097)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1203)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:619)
      

  4.   

    嗯,看过了,已经开启了,class下也有,重新编译之后报如下错误:
    严重: Exception invoking periodic operation: 
    java.lang.NoClassDefFoundError: org/apache/struts2/util/ObjectFactoryDestroyable
    at org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:254)
    at org.apache.struts2.dispatcher.FilterDispatcher.destroy(FilterDispatcher.java:233)
    at org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:332)
    at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:3731)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4493)
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1097)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1203)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:619)
      

  5.   

    NoClassDefFoundError   有类没有找到啊!
      

  6.   

    检查一下jar包吧,有可能把哪个误删了
      

  7.   

    我现在重装了myeclipse,tomcat,把之前备份的工程(绝对正确)导进去还是报空指针异常
      

  8.   

    误删有可能,但是已经重新导过了,而且重装了myeclipse,tomcat,导入了备份的工程,但是还是报空指针异常
      

  9.   


    到底是空指针异常还是NoClassDefFoundError   异常
      

  10.   


    到底是空指针异常还是NoClassDefFoundError   异常是空指针异常,NoClassDefFoundError这个错误是每次重新编译的时候就跑出来的,也就是说,一运行报空指针,重新编译报NoClassDefFoundError
    空指针异常如下:
    java.lang.NullPointerException
    com.shiep.action.LoginAction.operatorLogin(LoginAction.java:17)
    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:440)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
      

  11.   

     com.shiep.action.LoginAction.operatorLogin(LoginAction.java:17)
    这个对应如下
    Operator op = operatorDao.findById(operator.getIdOperator());
    debug显示operatorDao为null
      

  12.   

    你在OperatorDao 的settrer方法上打断点,重新在bug模式下启动,看看会不会注入进去;
      

  13.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH
      

  14.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀
      

  15.   

    jar包的话已经重新导入过了,不就是spring和struts包吗,hibernate的myeclipse自带着,按理说不该哈,我每天都会备份程序的,现在即使是拿之前备份过的也是一样空指针,不注入
      

  16.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀jar包的话已经重新导入过了,不就是spring和struts包吗,hibernate的myeclipse自带着,按理说不该哈,我每天都会备份程序的,现在即使是拿之前备份过的也是一样空指针,不注入 
      

  17.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀jar包的话已经重新导入过了,不就是spring和struts包吗,hibernate的myeclipse自带着,按理说不该哈,我每天都会备份程序的,现在即使是拿之前备份过的也是一样空指针,不注入 
    我试过了,现在如果在action中不写setter方法,spring的配置文件马上就报错,而且运行也报没找到setter的错,也就是说spring还是在监视setter方法的,但是为什么只监视,不注入呢
      

  18.   

    哈哈,换工作区间、重建工程、重新导包、重装myeclipse等都试过了,没用的,还是一样空指针,现在我都快被这个搞的崩溃了
      

  19.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀我刚刚看到网上说要把struts和spring结合起来,struts的class属性要是spring中的bean id,我试了一下,但是报错说找不到这个class,我的spring是在web.xml中初始化的
      

  20.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀我刚刚看到网上说要把struts和spring结合起来,struts的class属性要是spring中的bean id,我试了一下,但是报错说找不到这个class,我的spring是在web.xml中初始化的哈哈,终于解决了,就是这个struts与spring结合的问题,添加struts2-spring-plug.jar包,把struts的class属性与spring的bean id属性结合起来。我想说的是,为什么我之前struts与spring没有半毛关系,好好的,项目快要完成的时候就突然所有的spring注入都失效?然后我又发现我只结合了登录的时候的struts和spring,但是现在居然其他没有结合的功能都运行的好好的,什么情况?越来越诡异了,然后我把登录时候的结合也去掉,就像程序崩溃之前一样,让struts与spring没有半毛关系,奇迹出现了,还是运行成功,天啊,有人能告诉我为什么吗?我感觉我不是在编程,而是在变魔术
      

  21.   

    可以说是,也可以说不是,现在又好好的,我把导入的struts2-spring-plug.jar删了,恢复到以前的情况,也好好的,感觉好像被struts和spring调戏了一天之后又回到了故障之前
      

  22.   

    哈哈,太不容易了,关键是无法预知bug,及其产生时间,排除bug需要多长时间,这些不可控性太折磨人了
    这个异常我感觉可能就是struts与spring的一个bug,不稳定造成的
      

  23.   


    你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀我刚刚看到网上说要把struts和spring结合起来,struts的class属性要是spring中的bean id,我试了一下,但是报错说找不到这个class,我的spring是在web.xml中初始化的哈哈,终于解决了,就是这个struts与spring结合的问题,添加struts2-spring-plug.jar包,把struts的class属性与spring的bean id属性结合起来。我想说的是,为什么我之前struts与spring没有半毛关系,好好的,项目快要完成的时候就突然所有的spring注入都失效?然后我又发现我只结合了登录的时候的struts和spring,但是现在居然其他没有结合的功能都运行的好好的,什么情况?越来越诡异了,然后我把登录时候的结合也去掉,就像程序崩溃之前一样,让struts与spring没有半毛关系,奇迹出现了,还是运行成功,天啊,有人能告诉我为什么吗?我感觉我不是在编程,而是在变魔术前段时间我也碰到了,但是我们肯是公司封装了。spring的bean的id一定要是对应action的包名。否则在继承的baseaction中无法注入。
      

  24.   

    必须结合啊
    因为你可以看下web.xml中,spring的配置是没了。而是靠struts2的拦截器Interpretationer讲所有的请求以及响应进行拦截处理啊然后提交给spring啊。你不给struts2-spring-plug.jar包。。请问spring,怎么获得配置