2013-05-18 3 views
0

Здравствуйте, I`m пытается запустить работу в весенней партии, но его дает мне эту ошибку, которую я не знаю, как решить:Что означает эта ошибка при запуске?

`$` C:\Program Files\Microsoft Visual Studio 8\VC>java -jar C:\Workspacetest\testpro 
    ject\target\ams-eod-0.0.1-SNAPSHOT.jar copyJob 1 `$` 

Exception in thread "main" java.lang.NullPointerException 
    at sun.launcher.LauncherHelper.getMainClassFromJar(LauncherHelper.java:399) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:463) 

Однако это мой ApplicationContext. может ли кто-нибудь помочь мне в отношении этой ошибки, пожалуйста? Несколько слов, чтобы описать, что делает задание, это задание считывает из базы данных некоторые записи, а затем выполняет вычисления для каждой записи (строка * 3.75), а затем обновляет запись.

<?xml version="1.0" encoding="UTF-8"?> 

<beans:beans xmlns="http://www.springframework.org/schema/batch" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd 
      http://www.springframework.org/schema/batch 
      http://www.springframework.org/schema/batch/spring-batch-2.2.xsd"> 

<beans:bean id="itemReader" class="org.spr...JdbcCursorItemReader"> 
    <beans:property name="dataSource" ref="dataSource"/> 
    <beans:property name="sql" value="select * from Trans WHERE id =?"/> 
    <beans:property name="rowMapper" ref= "CustomerCreditRowMapper"/> 
    <beans:property name="preparedStatementSetter" ref="idSetter"/> 
</beans:bean> 

<beans:bean id="transactionProcessor" class=""> 
    <beans:property name="targetObject" ref="Processing"/> 
    <beans:property name="targetMethod" value="process"/> 
</beans:bean> 

<beans:bean id="jdbcWriter"         
class="org.springframework.batch.item.database.JdbcBatchItemWriter"> 
     <beans:property name="dataSource" ref="dataSource"/> 
    <beans:property name="sql" value="update Trans set (amount) values (?)"/> 
    <beans:property name="preparedStatementSetter" ref="idSetter"/> 
</beans:bean> 

<step id="CopyFileStep"> 
    <tasklet> 
     <chunk reader="itemReader" 
       processor="transactionProcessor" 
       writer="jdbcWriter" 
       commit-interval="10"/> 
    </tasklet> 
</step> 

<job id="copyJob"> 
    <step id="step1" parent="CopyFileStep"/> 
</job> 

<beans:bean id="preparedStatementSetter" 
class="sa.com.anb.itg.dev.settlement.batch.Itemwriter"/> 

<beans:bean id="idSetter" class="sa.com.anb.itg.dev.settlement.batch.idSetter"  
scope="step"> 
    <beans:property name="id" value="#{jobParameters[id]}"/> 
</beans:bean> 

<beans:bean id="CustomerCreditRowMapper"  
class="sa.com.anb.itg.dev.settlement.batch.CustomerCreditRowMapper"/> 

<beans:bean id="AmountToTransactionItemProcessor" 
    class="sa.com.anb.itg.dev.settlement.batch.AmountToTransactionItemProcessor"> 
     <beans:property name="TransactionDAO" ref="TransactionDAO"/> 
</beans:bean> 

<beans:bean id="TransactionDAO" class="sa.com.anb.itg.dev.settlement.batch.TransactionDAO"> 
    <beans:property name="datasource" ref="dataSource"/> 
</beans:bean>  

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <beans:property name="driverClassName" value="org.hsqldb.jdbcDriver" /> 
    <beans:property name="url" value="jdbc:oracle:thin:@192.168.84.208:1556:pay10g" /> 
    <beans:property name="username" value="ams_recon" /> 
    <beans:property name="password" value="ams_recon" /> 
</beans:bean> 

<beans:bean id="jobRepository" 
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"> 
      <beans:property name="dataSource" ref="dataSource"/> 
      <beans:property name="transactionManager" ref="transactionManager"/> 
</beans:bean> 

<beans:bean id="jobLauncher" 
    class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
    <beans:property name="jobRepository" ref="jobRepository" /> 
</beans:bean> 

<beans:bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" lazy-init="true"> 
    <beans:property name="dataSource" ref="dataSource"/> 
</beans:bean> 

</beans:beans> 
+0

Вы управляете кодом этого приложения, не так ли? – acdcjunior

+0

да, я управляю приложением. – user1744446

+0

Вставьте код для метода 'main()'. Кроме того, выдержка из наиболее используемого класса. – acdcjunior

ответ

3

Ну, при запуске приложения вам действительно нужен Основной класс.

Spring Batch может предоставить вам один: CommandLineJobRunner.

В вашем примере кажется, что вы пытаетесь выполнить свое приложение как обычное с помощью командной строки. Здесь Java пытается найти файл манифеста, потому что JVM НУЖДАЕТ основной класс, и он не может найти его в вашем JAR, который вызывает вашу ошибку.

Это не ваше приложение, которое вам нужно запустить с командной строкой, это CommandLineJobRunner, который предоставляет метод Main, способный запустить вашу партию. В документации показано, как его использовать: http://static.springsource.org/spring-batch/reference/html/configureJob.html#runningJobsFromCommandLine

+0

Нет, я не имею, но на основании того, что я прочитал, мне не нужен основной класс, так как я буду запускать его в CommandLineJobRunner. Я не уверен, потому что я новый для весенней партии. Пожалуйста, купите, что вы предоставили мне образец основного класса. я был бы очень благодарен. – user1744446

+0

Я отредактировал свой ответ. –

+0

Большое спасибо, что было очень полезно, но основной класс не существует, который я ищу, удаляется. любые советы, если возможно – user1744446