Как записать класс в файл с фиксированной длиной с BeanIO, используя BeanIOFlatFileItemWriter? - PullRequest
0 голосов
/ 04 октября 2019
public class NCFBulkOrderItemWriter implements ItemWriter<STC> {

    BeanIOFlatFileItemWriter<STC> beanIOFlatFileItemWriter = new BeanIOFlatFileItemWriter();

    public BeanIOFlatFileItemWriter<STC> customerDetailItemWriter() throws IOException {
        // Factory loads mappings
        StreamFactory streamFactory = StreamFactory.newInstance();

        // Create a stream mapping and define its layout
        StreamBuilder builder = new StreamBuilder("TM")
                .format("fixedlength")
                .addRecord(STC.class);
//              .addRecord(PI01.class)
//              .addRecord(RI01.class);

        // Notifiy the factory about the builder
        streamFactory.define(builder);

        Writer out = new BufferedWriter(new FileWriter("BeanIO.csv"));
        BeanWriter beanWriter = streamFactory.createWriter("TM", out);

        // If I take this out I get an error stating the resource the is not set
        beanIOFlatFileItemWriter.setResource(new FileSystemResource("BeanIO.csv"));

        // Tell the writer about the factory
        beanIOFlatFileItemWriter.setStreamFactory(streamFactory);

        return beanIOFlatFileItemWriter;
    }

    @Override
    public void write(List<? extends STC> items) throws Exception {
        // Write the items to the setResource
        beanIOFlatFileItemWriter.write(items);
    }

####################### ERROR MESSAGE ###########################################

java.lang.NoSuchMethodError: org / springframework / batch / support / транзакция / TransactionAwareBufferedWriter. (Ljava / io / Writer; Ljava / lang / Runnable;) V (загружается из файла: / C: / Users /TSO2784 / .gradle / caches / modules-2 / files-2.1 / org.springframework.batch / spring-batch -structure / 3.0.7.RELEASE / 6fa6cc10e95b548c3aa0aaa4e77308b3189388c4 / spring-batch -structure-3.0.7. .misc.Launcher $ AppClassLoader @ a149a7d6) вызывается из класса org.beanio.spring.BeanIOFlatFileItemWriter $ Stream (загружается из файла: / C: /Users/TSO2784/.gradle/caches/modules-2/files-2.1/org.beanio/beanio/2.1.0/5e454160ebf6feee16533015705b1d90506af598/beanio-2.1.0.jar by sun.misc.Launcher$AppClassLoader@a149a7d6). по адресу org.beanio.spring.BeanIOFlatFileItemWriter $ Stream.createBufferedWriter (BeanIOFlatFileItemWriter.java:561) ~ [beanio-2.1.0.jar: 2.1.0] по адресу org.beanio.spring.BeanIOFlatFileItemWriterFileIFileIFileIFileIFileIFileIFileIFileIFileIFileIFileIFFI372) ~ [beanio-2.1.0.jar: 2.1.0] в org.beanio.spring.BeanIOFlatFileItemWriter.open (BeanIOFlatFileItemWriter.java:101) ~ [beanio-2.1.0.jar: 2.1.0] в орг. springframework.batch.item.support.CompositeItemStream.open (CompositeItemStream.java:96) ~ [spring-batch -structure-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в

2019-10-04 09: 57: 59.390 ОШИБКА 8600 --- [main] osbatch.core.step.AbstractStep: Исключительная ситуация при закрытии ресурсов выполнения шага в шаге NCFBulkOrderStep в задании NCFBulkOrderJob

java.lang.NullPointerException: null at org.beanio.spring.BeanIOFlatFileItemWriter $ Stream.close (BeanIOFlatFileItemWriter.java:489) ~ [beanio-2.1.0.jar: 2.1.0] в

################### UPDATE
    @Override
    public void write(List<? extends STC> items) throws Exception {
        StreamFactory streamFactory = StreamFactory.newInstance();
        StreamBuilder builder = new StreamBuilder("TM")
                .format("fixedlength")
                .addRecord(STC.class)
                .addRecord(PI01.class)
                .addRecord(RI01.class);
        streamFactory.define(builder);

        BeanWriter out = streamFactory.createWriter("TM", new File("C:\\dev\\git\\ncf-bulk-order\\BeanIO.csv"));
        // Write the items to the setResource
//      beanIOFlatFileItemWriter.write(items);
        for(STC item: items) {
            out.write(item.getLabel());
//          System.out.println("This is the write: " + item.getLabel());
        }
    }

org.beanio.BeanWriterException: Ошибка идентификации бина: нетзапись или групповое сопоставление для bean-класса 'java.lang.String' в текущей позиции в org.beanio.internal.parser.BeanWriterImpl.write (BeanWriterImpl.java:82) ~ [beanio-2.1.0.jar: 2.1. 0] at org.beanio.internal.parser.BeanWriterImpl.write (BeanWriterImpl.java:51) ~ [beanio-2.1.0.jar: 2.1.0] на com.shelter.NCFBulkOrder.Writer.NCFBulkOrderItemWriter.wrerFWRerF. Java: 73) ~ [classes /: na] в org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems (SimpleChunkProcessor.java:175) ~ [spring-batch-core-3.0.7.RELEASE.jar:3.0.7.RELEASE] at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite (SimpleChunkProcessor.java:151) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.step.item.SimpleChunkProcessor.write (SimpleChunkProcessor.java:274) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.step.item.SimpleChunkProcessor.process (SimpleChunkProcessor.java:199) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute (ChunkOrientedTasklet.java:75) ~ [spring-batch-core-3.0.7.RELEASE. jar: 3.0.7.RELEASE] в org.springframework.batch.core.step.tasklet.TaskletStep $ ChunkTransactionCallback.doInTransaction (TaskletStep.java:406) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep $ ChunkTransactionCallback.doInTransaction (TaskletStep.java:330) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7. RELEASE] в org.springframework.transaction.support.TransactionTemplate.execute (TransactionTemplate.java:133) ~ [spring-tx-4.3.7.RELEASE.jar: 4.3.7.RELEASE] в org.springframework.batch.core. step.tasklet.TaskletStep $ 2.doInChunkContext (TaskletStep.java:271) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] по адресу org.springframework.batch.core.scope.context. StepContextRepeatCallback.doInIteration (StepContextRepeatCallback.java:81) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0. 7.RELEASE]в org.springframework.batch.repeat.support.RepeatTemplate.getNextResult (RepeatTemplate.java:374) ~ [spring-batch -structure-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch. repeat.support.RepeatTemplate.executeInternal (RepeatTemplate.java:215) ~ [spring-batch -structure-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144) ~ [spring-batch -structure-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.step.tasklet.TaskletStep.doExecute (TaskletStep.java:257) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.step.AbstractStep.execute (AbstractStep.java:200) ~ [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.job.SimpleStepHandler.handleStep (SimpleStepHandler.java:148) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] at org.springframework.batch.core.job.AbstractJob.handleStep (AbstractJob.java:392) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.job.SimpleJob.doExecute (SimpleJob.java:135) [spring-batch-core-3.0.7. RELEASE.jar: 3.0.7.RELEASE] в org.springframework.batch.core.job.AbstractJob.execute (AbstractJob.java:306) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7. RELEASE] at org.springframework.batch.core.launch.support.SimpleJobLauncher $ 1.run (SimpleJobLauncher.java:135) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org. springframework.core.task.SyncTaskExecutor.execute (SyncTaskExecutor.java:50) [spring-core-4.3.7.RELEASE.jar: 4.3.7.RELEASE] в org.springframework.batch.core.launch.support.SimpleJobauncзапустить (SimpleJobLauncher.java:128) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_222] вsun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_222] at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) ~ [na: 1.8.0_222] в java.lang.reflect.Method.invoke (Method.java:498) ~ [na: 1.8.0_222] в org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection (AopUtils.java): 333) [spring-aop-4.3.7.RELEASE.jar: 4.3.7.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint (ReflectiveMethodInvocation.java:190) [spring-aop-4.3.7. RELEASE.jar: 4.3.7.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:157) [spring-aop-4.3.7.RELEASE.jar: 4.3.7.RELEASE] или.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration $ PassthruAdvice.invoke (SimpleBatchConfiguration.java:127) [spring-batch-core-3.0.7.RELEASE.jar: 3.0.7.RELEASE] в org.springframework.a.framework. ) [spring-aop-4.3.7.RELEASE.jar: 4.3.7.RELEASE] в com.sun.proxy. $ Proxy45.run (неизвестный источник) [na: na] в org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.execute (JobLauncherCommandLineRunner.java:) [spring-boot-autoconfigure-1.5.2.RELEASE.jar: 1.5.2.RELEASE] по адресу org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.executeLocalJobs (JobLauncherCommandLineRunner.java:- bootconfize.java:- boot)1.5.2.RELEASE.jar: 1.5.2.RELEASE] по адресу org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.launchJobFromProperties (JobLauncherCommandLineRunner.java:123) [spring-boot-autoconEL: 1.5.2.j.2.2. 1.5.2.RELEASE] at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.run (JobLauncherCommandLineRunner.java:117) [spring-boot-autoconfigure-1.5.2.RELEASE.jar: 1.5.2.RELEASE]в org.springframework.boot.SpringApplication.callRunner (SpringApplication.java:776) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] в org.springframework.boot.SpringApplication.callRunners (SpringApplication.java): 760) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] в org.springframework.boot.SpringApplication.afterRefresh (SpringApplication.java:747) [spring-boot-1.5.2.RELEASE. jar: 1.5.2.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:315) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] на com.shelter.NCFBulkOrder.NcfBulkOrderApplication.main (NcfBulkOrderApplication.java:17) [классы /: нет]


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...