Java &引用;无法反序列化执行上下文“;使用StepBuilder创建tasklet时

Java &引用;无法反序列化执行上下文“;使用StepBuilder创建tasklet时,java,spring,spring-batch,Java,Spring,Spring Batch,我最近开始使用SpringBatch(对Java来说是个新手),现在我正在尝试创建一个tasklet,它在数据库中创建一个表 @EnableBatchProcessing @SpringBootApplication public class Configure { public static void main(String[] args) { SpringApplication.run(Configure.cl

我最近开始使用SpringBatch(对Java来说是个新手),现在我正在尝试创建一个tasklet,它在数据库中创建一个表

    @EnableBatchProcessing
    @SpringBootApplication
    public class Configure {

        public static void main(String[] args)
        {
            SpringApplication.run(Configure.class, args);
        }    
    @Bean
        public Job AggregateTransactionsFromDatabaseToXML(JobBuilderFactory jobBuilderFactory,
                                                          StepBuilderFactory stepBuilderFactory,
                                                          Tasklets tasklets){return jobBuilderFactory.get("etl")
                                    .incrementer(new RunIdIncrementer())
                                    .start(tasklets.createTempTable(null, null))
                                    .build();}

        @Configuration
        static class Tasklets{
            @Bean
            Step createTempTable(DataSource dataSource, StepBuilderFactory stepBuilderFactory) {
                StepBuilder createTempTable = stepBuilderFactory.get("create temp table");
                String sql = "CREATE TABLE DatabaseName.TableName\n" +
                        "(\n" +
                        "    column1 VARCHAR(255) NOT NULL,\n" +
                        "    column2 DATE NOT NULL,\n" +
                        "    column3 DECIMAL NOT NULL,\n" +
                        "    column4 BIGINT NOT NULL,\n" +
                        "    column5 BIGINT NOT NULL\n" +
                        ")";
                return createTempTable.tasklet((contribution, chunkContext) -> {
                    new JdbcTemplate(dataSource).execute(sql);
                    return RepeatStatus.FINISHED;
                })
                                      .allowStartIfComplete(true)
                                      .build();
            }
}
}
我收到一个错误:
,原因是:java.lang.IllegalArgumentException:无法反序列化执行上下文。

我不知道这怎么可能

我在网上查找StepBuilder的示例,但找不到对我的任务有用的示例。 及

我使用的StepBuilder错误吗?有人知道如何解决这个问题吗


问题已经解决:我没有配置spring应用程序上下文。这显然很重要。

问题已经解决:我没有配置spring应用程序上下文。这显然很重要


我还将tasklets.createTestable(null,null)更改为tasklets.createTestable(null,stepBuilderFactory)。

问题已经解决:我没有配置spring应用程序上下文。这显然很重要


我还将tasklets.createAttendable(null,null)更改为tasklets.createAttendable(null,stepBuilderFactory)。

您使用的源代码教程(如果可以提供的话)?另外,请共享完整代码。您是否也在使用Spring Boot等框架?您是如何设置数据源的?您使用的是什么类型的数据库?我使用的是spring boot和mysql。数据源在application.properties中配置(它在我运行的其他步骤上工作,而不是在此[[更正链接,两个都是404。如果可能的话,包括有问题的。你有像
BATCH\u job\u INSTANCE
BATCH\u job\u EXECUTION
等设置的作业元数据表吗?这些是spring BATCH保存作业元数据的表。是的,我得到了这些表。现在一切都正常了。我还更改了tasklets.createTestable(null,null)到tasklets.createTestable(null,stepBuilderFactory)。您使用的源教程是什么(如果可以提供)?此外,请共享完整代码。您是否也在使用Spring Boot等框架?您如何设置数据源以及您使用的数据库类型?我正在使用Spring Boot和mysql。数据源在application.properties中配置(它在我运行的其他步骤中工作,而不是在这个[[更正链接,两个都是404。如果可能的话,包括有问题的。你有像
BATCH\u job\u INSTANCE
BATCH\u job\u EXECUTION
等设置的作业元数据表吗?这些是spring BATCH保存作业元数据的表。是的,我得到了这些表。现在一切都正常了。我还更改了tasklets.createTestable(null,null)到tasklets.createTestable(null,stepBuilderFactory)。