2015-07-22 65 views
0

我有一个java应用程序,它是由gradle构建的jar。此应用程序使用spring xml上下文。 如果我在Eclipse中使用它,一切都很好。 当我尝试启动命令行应用程序,它与起伏的错误:无法找到XML架构名称空间,但spring.schemas和spring.handlers是在罐子里

D:\docs>java -jar WebserverMinimal.jar 
DEBUG: me.test.selfcare.SelfcareMain - app started 
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinit 
ionParsingException: Configuration problem: Unable to locate Spring NamespaceHan 
dler for XML schema namespace [http://www.springframework.org/schema/context] 
Offending resource: class path resource [selfcare-integration.xml] 

     at org.springframework.beans.factory.parsing.FailFastProblemReporter.err 
or(FailFastProblemReporter.java:70) 
     at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderC 
ontext.java:85) 
     at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderC 
ontext.java:80) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.er 
ror(BeanDefinitionParserDelegate.java:316) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa 
rseCustomElement(BeanDefinitionParserDelegate.java:1424) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa 
rseCustomElement(BeanDefinitionParserDelegate.java:1417) 
     at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe 
ader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174) 
     at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe 
ader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144) 
     at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe 
ader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registe 
rBeanDefinitions(XmlBeanDefinitionReader.java:510) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadB 
eanDefinitions(XmlBeanDefinitionReader.java:392) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea 
nDefinitions(XmlBeanDefinitionReader.java:336) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea 
nDefinitions(XmlBeanDefinitionReader.java:304) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReade 
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReade 
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReade 
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReade 
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loa 
dBeanDefinitions(AbstractXmlApplicationContext.java:127) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loa 
dBeanDefinitions(AbstractXmlApplicationContext.java:93) 
     at org.springframework.context.support.AbstractRefreshableApplicationCon 
text.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
     at org.springframework.context.support.AbstractApplicationContext.obtain 
FreshBeanFactory(AbstractApplicationContext.java:537) 
     at org.springframework.context.support.AbstractApplicationContext.refres 
h(AbstractApplicationContext.java:452) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<i 
nit>(ClassPathXmlApplicationContext.java:139) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<i 
nit>(ClassPathXmlApplicationContext.java:83) 
     at me.test.selfcare.SelfcareMain.main(SelfcareMain.java:15) 

我检查了spring.schemas和spring.handlers在罐子。在jar/META-INF中有几个这些名字的文件。但是那个jar包在spring-context-4.1.6.jar中。

spring.schemas:

http\://www.springframework.org/schema/context/spring-context-2.5.xsd=org/springframework/context/config/spring-context-2.5.xsd 
http\://www.springframework.org/schema/context/spring-context-3.0.xsd=org/springframework/context/config/spring-context-3.0.xsd 
http\://www.springframework.org/schema/context/spring-context-3.1.xsd=org/springframework/context/config/spring-context-3.1.xsd 
http\://www.springframework.org/schema/context/spring-context-3.2.xsd=org/springframework/context/config/spring-context-3.2.xsd 
http\://www.springframework.org/schema/context/spring-context-4.0.xsd=org/springframework/context/config/spring-context-4.0.xsd 
http\://www.springframework.org/schema/context/spring-context-4.1.xsd=org/springframework/context/config/spring-context-4.1.xsd 
http\://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-4.1.xsd 
http\://www.springframework.org/schema/jee/spring-jee-2.0.xsd=org/springframework/ejb/config/spring-jee-2.0.xsd 
http\://www.springframework.org/schema/jee/spring-jee-2.5.xsd=org/springframework/ejb/config/spring-jee-2.5.xsd 
http\://www.springframework.org/schema/jee/spring-jee-3.0.xsd=org/springframework/ejb/config/spring-jee-3.0.xsd 
http\://www.springframework.org/schema/jee/spring-jee-3.1.xsd=org/springframework/ejb/config/spring-jee-3.1.xsd 
http\://www.springframework.org/schema/jee/spring-jee-3.2.xsd=org/springframework/ejb/config/spring-jee-3.2.xsd 
http\://www.springframework.org/schema/jee/spring-jee-4.0.xsd=org/springframework/ejb/config/spring-jee-4.0.xsd 
http\://www.springframework.org/schema/jee/spring-jee-4.1.xsd=org/springframework/ejb/config/spring-jee-4.1.xsd 
http\://www.springframework.org/schema/jee/spring-jee.xsd=org/springframework/ejb/config/spring-jee-4.1.xsd 
http\://www.springframework.org/schema/lang/spring-lang-2.0.xsd=org/springframework/scripting/config/spring-lang-2.0.xsd 
http\://www.springframework.org/schema/lang/spring-lang-2.5.xsd=org/springframework/scripting/config/spring-lang-2.5.xsd 
http\://www.springframework.org/schema/lang/spring-lang-3.0.xsd=org/springframework/scripting/config/spring-lang-3.0.xsd 
http\://www.springframework.org/schema/lang/spring-lang-3.1.xsd=org/springframework/scripting/config/spring-lang-3.1.xsd 
http\://www.springframework.org/schema/lang/spring-lang-3.2.xsd=org/springframework/scripting/config/spring-lang-3.2.xsd 
http\://www.springframework.org/schema/lang/spring-lang-4.0.xsd=org/springframework/scripting/config/spring-lang-4.0.xsd 
http\://www.springframework.org/schema/lang/spring-lang-4.1.xsd=org/springframework/scripting/config/spring-lang-4.1.xsd 
http\://www.springframework.org/schema/lang/spring-lang.xsd=org/springframework/scripting/config/spring-lang-4.1.xsd 
http\://www.springframework.org/schema/task/spring-task-3.0.xsd=org/springframework/scheduling/config/spring-task-3.0.xsd 
http\://www.springframework.org/schema/task/spring-task-3.1.xsd=org/springframework/scheduling/config/spring-task-3.1.xsd 
http\://www.springframework.org/schema/task/spring-task-3.2.xsd=org/springframework/scheduling/config/spring-task-3.2.xsd 
http\://www.springframework.org/schema/task/spring-task-4.0.xsd=org/springframework/scheduling/config/spring-task-4.0.xsd 
http\://www.springframework.org/schema/task/spring-task-4.1.xsd=org/springframework/scheduling/config/spring-task-4.1.xsd 
http\://www.springframework.org/schema/task/spring-task.xsd=org/springframework/scheduling/config/spring-task-4.1.xsd 
http\://www.springframework.org/schema/cache/spring-cache-3.1.xsd=org/springframework/cache/config/spring-cache-3.1.xsd 
http\://www.springframework.org/schema/cache/spring-cache-3.2.xsd=org/springframework/cache/config/spring-cache-3.2.xsd 
http\://www.springframework.org/schema/cache/spring-cache-4.0.xsd=org/springframework/cache/config/spring-cache-4.0.xsd 
http\://www.springframework.org/schema/cache/spring-cache-4.1.xsd=org/springframework/cache/config/spring-cache-4.1.xsd 
http\://www.springframework.org/schema/cache/spring-cache.xsd=org/springframework/cache/config/spring-cache-4.1.xsd 

spring.handlers:

http\://www.springframework.org/schema/context=org.springframework.context.config.ContextNamespaceHandler 
http\://www.springframework.org/schema/jee=org.springframework.ejb.config.JeeNamespaceHandler 
http\://www.springframework.org/schema/lang=org.springframework.scripting.config.LangNamespaceHandler 
http\://www.springframework.org/schema/task=org.springframework.scheduling.config.TaskNamespaceHandler 
http\://www.springframework.org/schema/cache=org.springframework.cache.config.CacheNamespaceHandler 

我想不通,为什么它不会看到它位于罐子就像是写XSD文件在映射?

有一流的,我尝试初始化Spring应用程序上下文:

package me.test.selfcare; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class SelfcareMain { 

    private static final Logger log = LoggerFactory.getLogger(SelfcareMain.class); 

    public static void main(String args[]) { 
     log.debug("app started"); 
     String contextName="classpath:selfcare-integration.xml"; 
     ApplicationContext context = new ClassPathXmlApplicationContext(contextName); 
     log.debug("spring context is initialized"); 
    } 

} 

应用程序上下文XML文件:

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

    <context:component-scan base-package="me.test.selfcare.domain" /> 

    <object-to-json-transformer 
     input-channel="input" 
     output-channel="json" /> 

    <channel id="input" /> 

    <channel id="json"> 
     <queue capacity="10" /> 
    </channel> 

</beans:beans> 

的build.gradle:

apply plugin: 'java' 
apply plugin: 'eclipse' 

compileJava.options.encoding = 'UTF-8' 

version = '1.0' 

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

task createJar(type: Jar) { 
    archiveName = "WebserverMinimal.jar" 
    manifest { 
     attributes 'Implementation-Title': 'Gradle Jar File Example', 
      'Implementation-Version': version, 
      'Main-Class': 'me.test.selfcare.SelfcareMain' 
    } 
    baseName = project.name 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    with jar 
} 

task copyJarToBin { 
    doLast { 
     copy { 
      from 'build/libs/WebserverMinimal.jar' 
      into "d:/docs/svn_bolid_bin/bin/Debug/Modules" 
     } 
     copy { 
      from 'build/libs/WebserverMinimal.jar' 
      into "d:/docs/svn_bolid_bin/bin/Release/Modules" 
     } 
    } 
} 
copyJarToBin.mustRunAfter createJar 

task buildWebserver (dependsOn: [clean, createJar, copyJarToBin]) 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.apache.tomcat.embed:tomcat-embed-core:7.0.16' 
    compile 'org.apache.tomcat.embed:tomcat-embed-logging-log4j:7.0.16' 
    compile 'org.slf4j:jcl-over-slf4j:1.7.9' 
    compile 'log4j:log4j:1.2.17' 
    compile 'org.slf4j:slf4j-log4j12:1.7.9' 
    compile 'com.googlecode.json-simple:json-simple:1.1.1' 

    compile 'org.springframework:spring-core:4.1.6.RELEASE' 
    compile 'org.springframework:spring-beans:4.1.6.RELEASE' 
    compile 'org.springframework:spring-context:4.1.6.RELEASE' 
    compile 'org.springframework.integration:spring-integration-core:4.1.6.RELEASE' 
    compile 'org.springframework.integration:spring-integration-jms:4.1.6.RELEASE' 
    compile 'org.codehaus.jackson:jackson-mapper-lgpl:1.9.9' 
    compile 'javax.jms:javax.jms-api:2.0.1' 
    compile 'org.apache.activemq:activemq-core:5.7.0' 
} 

uploadArchives { 
    repositories { 
     flatDir { 
      dirs 'repos' 
     } 
    } 
} 

回答

0

为了初始化你Spring上下文应该将所有5个核心弹簧罐添加到依赖关系。

compile 'org.springframework:spring-aop:4.1.7.RELEASE' 
compile 'org.springframework:spring-beans:4.1.7.RELEASE' 
compile 'org.springframework:spring-context:4.1.7.RELEASE' 
compile 'org.springframework:spring-core:4.1.7.RELEASE' 
compile 'org.springframework:spring-expression:4.1.7.RELEASE' 
相关问题