现在的位置: 首页 > 综合 > 正文

Spring配置的与所需类型不一致和加载struts文件异常的解决及思考

2018年04月10日 ⁄ 综合 ⁄ 共 4508字 ⁄ 字号 评论关闭

第一个简单命名:Cannot convert value of type X to required type Y for property Z.

下面把抛出的异常的一部分信息帖出来,给大家。

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'startQuertz' defined in class path resource

[spring/quartz-configuration-job.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException:

Failed to convert property value of type [java.util.ArrayList] to required type [org.quartz.Trigger[]] for property 'triggers';

nested exception is java.lang.IllegalArgumentException:
Cannot convert value of type [com.project.task.multithreading.TaskMultiThread] to required type [org.quartz.Trigger] for property 'triggers[0]':

no matching editors or conversion strategy found
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)


首先,看到这个异常,是Spring创建一个startQuertz的bean时出错。

那我就把这段配置贴出来,共大家看看(这是一个错误的配置)

<bean id="taskMultiThreadJob" class="org.springframework.scheduling.quartz.CronTriggerBean">
	<property name="jobDetail">
		<ref bean="taskMultiThreadTask" />
	</property>
	<property name="cronExpression">
		<value>0/59 * * * * ?</value>
	</property>
</bean>
<!-- JOB end -->

<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="triggers">
		<list>
			<ref bean="taskMultiThreadTask" />
		</list>
	</property>
</bean>

其次:这个bean的属性是org.quartz.Trigger[],而我给的数组,这不是主要原因,再往下看
再次:error提示想要TaskMultiThread这个类转化成Trigger这个类出错,真正原因
最后:来看这个配置,在这个list里,我的确配成TaskMultiThread这个类了,应该改成taskMultiThreadJob这个bean
完美解决。
    
第二个简单命名:Unable to load configuration ... /struts.xml:74:48    

2013-8-13 14:17:18 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
Unable to load configuration. - interceptor-ref - file:/D:/workspace/project/project-web/target/classes/struts.xml:74:48
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:502)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)

这个错误,其实还蛮经常遇到的,不过这个也是最好解决的,提示信息很清楚的告诉了您,是struts文件的那一行的第几个字符了。
去看一下这个地方,你配了什么,或者遗漏了什么,不过有些时候,不管你怎么看,都没有错。那我只能告诉你,这个工程你还是重新构建一下吧

解决问题的思路,有时候,从错误的信息里,也能看出来。有时候在你没有见过的错误面前,还需要通过互联网的搜索来找到问题。

抱歉!评论已关闭.