项目快完工的时候,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
如下是我的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
解决方案 »
- jboss7数据源连接mysql启动报错,求高人指点Caused by: java.sql.SQLException: java.lang.NoClassDef
- smack+webchat问题
- 学JavaEE的信心快动摇了,大家快帮我恢复学JavaEE的信心,谢谢。
- jms桌面应用程序
- dom4j生成文件,有中文乱码,怎么解决
- 求教“特殊的数据库联接池”应用解决方案
- DynaActionForm的form-property属性为自定义的javabean
- hibernate连接池
- Struts和AJAX的区别?
- jsp中如何调用ejb的问题?代码有错吗?
- hadoop是个什么技术?有培训机构开始招生了!
- jacob将excel另存为pdf格式,转换整个工作簿
1. 先刷新一下工程,(右击工程->刷新)
2. 重新编译(project->clear)一般都没有问题了,最简单的检查方法就是看 classes/目录下有没有生成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)
严重: 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)
到底是空指针异常还是NoClassDefFoundError 异常
到底是空指针异常还是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)
这个对应如下
Operator op = operatorDao.findById(operator.getIdOperator());
debug显示operatorDao为null
你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH
你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀
你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀jar包的话已经重新导入过了,不就是spring和struts包吗,hibernate的myeclipse自带着,按理说不该哈,我每天都会备份程序的,现在即使是拿之前备份过的也是一样空指针,不注入
你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀jar包的话已经重新导入过了,不就是spring和struts包吗,hibernate的myeclipse自带着,按理说不该哈,我每天都会备份程序的,现在即使是拿之前备份过的也是一样空指针,不注入
我试过了,现在如果在action中不写setter方法,spring的配置文件马上就报错,而且运行也报没找到setter的错,也就是说spring还是在监视setter方法的,但是为什么只监视,不注入呢
你用的是公司封装掉的框架吗?刚刚试过了,debug到setXXX方法的时候,没反应,不进入。不是封装的,是纯的SSH会不会是jar包的问题,你的配置是正确的呀我刚刚看到网上说要把struts和spring结合起来,struts的class属性要是spring中的bean id,我试了一下,但是报错说找不到这个class,我的spring是在web.xml中初始化的
你用的是公司封装掉的框架吗?刚刚试过了,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没有半毛关系,奇迹出现了,还是运行成功,天啊,有人能告诉我为什么吗?我感觉我不是在编程,而是在变魔术
这个异常我感觉可能就是struts与spring的一个bug,不稳定造成的
你用的是公司封装掉的框架吗?刚刚试过了,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中无法注入。
因为你可以看下web.xml中,spring的配置是没了。而是靠struts2的拦截器Interpretationer讲所有的请求以及响应进行拦截处理啊然后提交给spring啊。你不给struts2-spring-plug.jar包。。请问spring,怎么获得配置