hi,I am getting error Error : no matching editors or conversion strategy found while executing multilinejob from spring batch sample code in my application environment.
Note: Some of error code and xml D2D has been removed [dul to no. of char. previlages]
Spring -2.5.2,Spring batch 1.0.0
At console displayed following error
And at loggerCode:JobLauncher org.springframework.batch.core.launch.support.SimpleJobLauncher@adb1d4 Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multilineOrderJob' defined in file [C:\work\epower\jobs\multilineOrderJob.xml]: Cannot create inner bean 'step1' of type [org.springframework.batch.core.step.item.SimpleStepFactoryBean] while setting bean property 'steps'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'step1' defined in file [C:\work\epowe ean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.springframework.batch.item.file.transform.Range[]] for property 'columns'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [org.springframework.batch.item.file.transform.Range] for property 'columns[0]': no matching editors or conversion strategy found at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230) at Test.main(Test.java:35)
My job file isCode:DEBUG] [] [main] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:453) - Eagerly caching bean 'fixedFileDescriptor' to allow for resolving potential circular references [DEBUG] [] [main] org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:230) - Field [1-5] isn't an enum value java.lang.NoSuchFieldException: 1-5 at java.lang.Class.getField(Class.java:1507) at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:225) at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:386) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:404)
My main class isCode:<?xml version="1.0" encoding="UTF-8"?> <!--<import resource="classpath:/multilineOrderInputTokenizers.xml" /> <import resource="classpath:/multilineOrderIo.xml" /> --><bean id="jobRegistryBeanPostProcessor" class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor"> <property name="jobRegistry" ref="jobRegistry" /> </bean> <bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry" /> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="simpleJob" class="org.springframework.batch.core.job.SimpleJob" abstract="true"> <property name="jobRepository" ref="jobRepository" /> <property name="restartable" value="true" /> </bean> <bean id="taskletStep" class="org.springframework.batch.core.step.tasklet.TaskletStep" abstract="true"> <property name="jobRepository" ref="jobRepository" /> <property name="allowStartIfComplete" value="true" /> </bean> <bean id="simpleStep" class="org.springframework.batch.core.step.item.SimpleStepFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager" /> <property name="jobRepository" ref="jobRepository" /> <property name="startLimit" value="100" /> <property name="commitInterval" value="1" /> </bean> <bean id="mapJobInstanceDao" lazy-init="true" class="org.springframework.batch.core.repository.dao.MapJobInstanceDao" /> <bean id="mapJobExecutionDao" lazy-init="true" class="org.springframework.batch.core.repository.dao.MapJobExecutionDao" /> <bean id="mapStepExecutionDao" lazy-init="true" class="org.springframework.batch.core.repository.dao.MapStepExecutionDao" /> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="skipLimitStep" class="org.springframework.batch.core.step.item.SkipLimitStepFactoryBean" parent="simpleStep" abstract="true"> <property name="skipLimit" value="0" /> </bean> <bean id="logAdvice" class="springapp.custom.ProcessorLogAdvice" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="dbc:oracle:thin:@192.1.1.5:1521:APPWS2"/> <property name="username" value="dbcompare"/> <property name="password" value="dbcompare"/> </bean> <bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean" p:databaseType="oracle" p:dataSource-ref="dataSource" /> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository" /> </bean> <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="int[]"> <bean class="org.springframework.batch.support.IntArrayPropertyEditor" /> </entry> <entry key="org.springframework.batch.item.file.transform.Range[]"> <bean class="org.springframework.batch.item.file.transform.RangeArrayPropertyEditor" /> </entry> <entry key="java.util.Date"> <bean class="org.springframework.beans.propertyeditors.CustomDateEditor"> <constructor-arg> <bean class="java.text.SimpleDateFormat"> <constructor-arg value="yyyyMMdd" /> </bean> </constructor-arg> <constructor-arg value="false" /> </bean> </entry> </map> </property> </bean> <bean id="multilineOrderJob" parent="simpleJob"> <property name="steps"> <bean id="step1" parent="simpleStep"> <property name="streams" ref="fileItemReader"/> <property name="itemReader"> <bean class="org.springframework.batch.item.support.AggregateItemReader"> <property name="itemReader" ref="fileItemReader" /> </bean> </property> <property name="itemWriter"> <bean class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="file:data/multilineStepOutput.csv" /> <property name="fieldSetCreator"> <bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper"/> </property> </bean> </property> </bean> </property> </bean> <bean id="fileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> <property name="resource" value="classpath:multilineStepInput.txt" /> <property name="lineTokenizer" ref="fixedFileDescriptor" /> <property name="fieldSetMapper" ref="tradeLineMapper" /> <!-- <property name="validator" ref="fixedValidator" /> --> </bean> <bean id="tradeLineMapper" class="springapp.mapping.TradeFieldSetMapper" /> <bean id="fixedFileDescriptor" class="org.springframework.batch.item.file.transform.PrefixMatchingCompositeLineTokenizer"> <property name="tokenizers"> <map> <entry key="BEGIN" value-ref="beginRecordTokenizer" /> <entry key="END" value-ref="endRecordTokenizer" /> <entry key="" value-ref="tradeRecordTokenizer" /> </map> </property> </bean> <bean id="beginRecordTokenizer" class="org.springframework.batch.item.file.transform.FixedLengthTokenizer"> <property name="columns" value="1-5" /> </bean> <bean id="endRecordTokenizer" class="org.springframework.batch.item.file.transform.FixedLengthTokenizer"> <property name="columns" value="1-3" /> </bean> <bean id="tradeRecordTokenizer" class="org.springframework.batch.item.file.transform.FixedLengthTokenizer"> <property name="names" value="ISIN,Quantity,Price,Customer" /> <property name="columns" value="1-12, 13-15, 16-20, 21-29" /> </bean> </beans>
Code:public class Test { static Logger logger = Logger.getLogger(Test.class); public static void main(String[] args) throws SQLException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException { //final ApplicationContext applicationContext = new ClassPathXmlApplicationContext("multilineOrderJob.xml"); //applicationContext.getAutowireCapableBeanFactory().autowireBeanProperties(null,AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false); String strBeanFile="C:/work/epower/jobs/multilineOrderJob.xml"; XmlBeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource(strBeanFile)); JobLauncher jobLauncher = (JobLauncher) beanFactory.getBean("jobLauncher"); Job job = (Job) beanFactory.getBean("multilineOrderJob"); Map<String,String> map = new HashMap<String,String>(); map.put("executiontime",new java.util.Date().toString()); JobParameters parameters = new JobParameters(map, new HashMap<String,Long>(), new HashMap<String,Double>(), new HashMap<String,Date>()); jobLauncher.run(job,parameters); } }


Reply With Quote
ointcut id="testOp" expression="execution(* test.SampleInterface.*(..))"/> 