使用Spring注释调度作业时出错

时间:2013-08-09 17:36:06

标签: spring maven maven-2 maven-3 spring-batch

我正在尝试使用注释Spring安排作业..我的配置文件如下:

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:task="http://www.springframework.org/schema/task"
   xmlns:util="http://www.springframework.org/schema/util"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans       
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context   
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-   
   util.xsd
   http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-
   task-3.0.xsd">

   <task:annotation-driven />
   <util:properties id="batchProp" location="application.properties" />
   <context:property-placeholder properties-ref="batchProp" />
   <bean id="indexer" class="package-name"></bean>
   </beans>

这就是我调用它的方式:

  public static void main(String[] args){
    ApplicationContext appCont = new ClassPathXmlApplicationContext("Spring-Config.xml");
    prop_file = appCont.getBean("batchProp", Properties.class);
  }

我的pom构建段是文件:

  <build>
     <plugins>
    <plugin>
       <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
           <archive>
                          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>my_main_class</mainClass> 
              </manifest>
           </archive>
               <descriptorRefs>
                          <descriptorRef>jar-with-dependencies</descriptorRef>
                   </descriptorRefs>
            </configuration>
        <executions>
            <execution>
               <id>make-my-jar-with-dependencies</id>
               <phase>package</phase> 
               <goals>
                <goal>single</goal>
               </goals>
                </execution>
        </executions>
    </plugin>
</plugins>
</build>

当我在Spring Tool Suite中运行它时,这种方法非常好,但是当我在服务器中运行jar文件时会抛出错误。 错误如下:

  Exception in thread "main"    
  org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration   problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/task]
  Offending resource: class path resource [Spring-Config.xml]

    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:316)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1416)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1409)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:527)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:441)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.mypackage.name.Indexer.main(Indexer.java:204)

有人可以告诉我发生了什么事吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来没有带有“task”命名空间的spring jar(也许不仅是“task”,而是所有命名空间:尝试在“util:properties”之后放置“task:annotation-driven”,你会看到其他消息)服务器类路径中的定义。 检查服务器的“libs”目录中是否没有旧的spring jar。 尝试将必要的弹簧罐放入服务器“libs”目录。