2013-02-27 21 views
17

मुझे यह त्रुटि लगभग एक हफ्ते तक रही है और मैं बस देने के लिए तैयार हूं। मैंने बिग जार फ़ाइल बनाने के लिए मेवेन 2 का उपयोग किया है। जब मैं जार फ़ाइल का उपयोग कर चलाएँ:स्प्रिंग नेमस्पेस हैंडलर त्रुटि का पता लगाने में असमर्थ

java -jar someJar.jar 

मैं इस त्रुटि मिलती है:

ERROR: [27/55/13 10:55] Launcher: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context] 
Offending resource: class path resource [JavaProjectApplicationContext.xml] 

JavaProjectApplicationContext.xml इस प्रकार है:

<?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:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    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-3.0.xsd 
     http://www.springframework.org/schema/jee 
     http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> 

<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="location"><value>deployment.properties</value></property> 
</bean> 

<bean id="LexEditorDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
<property name="driverClassName"><value>${hibernate.jdbc_driver}</value></property> 
<property name="username"><value>${hibernate.username}</value></property> 
<property name="password"><value>${hibernate.password}</value></property> 
<property name="url"><value>${hibernate.url}</value></property> 
<property name="defaultAutoCommit"><value>${hibernate.default_auto_commit}</value> </property> 
<property name="maxActive"><value>20</value></property> 
<property name="maxIdle"><value>3</value></property> 
<property name="testOnBorrow"><value>true</value></property> 
<property name="testOnReturn"><value>true</value></property> 
<property name="testWhileIdle"><value>true</value></property> 
</bean> 

<context:component-scan base-package="com.k_int.bank.plugin"> 
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> 
</context:component-scan> 

    <bean id="ThesSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource"><ref local="LexEditorDataSource"/></property> 
    <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value></property> 
    <property name="packagesToScan"> 
     <list> 
      <value>com.bank.kernel.datamodel</value>    
     </list> 
</property> 
<property name="annotatedClasses"> 
    <list> 
    <!-- identity service --> 
    <value>com.svc.identity.datamodel.PartyHDO</value> 
    <value>com.svc.identity.datamodel.RegisteredUserHDO</value> 
    <value>com.svc.identity.datamodel.AuthenticationDetailsHDO</value> 
    <value>com.svc.identity.datamodel.GrantHDO</value> 
    <value>com.svc.identity.datamodel.PermissionHDO</value> 
    <value>com.svc.identity.datamodel.RegisteredOrganisationHDO</value> 
    <value>com.svc.identity.datamodel.RoleHDO</value> 
    </list> 
</property> 
    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
    <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
    <prop key="hibernate.show_sql">false</prop>  
    </props> 
    </property> 
</bean> 
    <bean id="IndexService" class="com.k_int.bank.index.solr_impl.SOLRIndexService" init-method="init"> 
    <property name="indexDirectory"><value>${com.bank.index_dir}</value></property> 
    <property name="indexPropertyFile"><value>solr.properties</value></property> 
    </bean> 



चीजें मैं अब तक की कोशिश की है।

ने परियोजना को 3 अलग-अलग तरीकों से बनाया (2 आईडीई और कमांड लाइन) ने किसी भी जार निर्भरता संघर्ष को हटा दिया (मेरे पास वसंत-2.5.6.jar और वसंत-संदर्भ-3.0.5.RELEASE.jar था, इसलिए मैंने हटा दिया वसंत-2.5.6.jar)

http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd में बदल गया।

इनमें से किसी भी बदलाव ने त्रुटि को हटा दिया है।

कार फ़ाइल में मौजूद है

someJar.jar/org/springframework/context/config/ContextNameSpaceHandler.class 

किसी को भी सब पर किसी भी विचार मिल गया है।

+0

आप 'beans' नाम स्थान यूआरआई को बदल दिया है, लेकिन त्रुटि संदेश' context' नाम स्थान के बारे में है। मैप किए गए यूआरआई (जैसे 'http: // www.springframework.org/schema/context/spring/context.xsd') से संस्करण जानकारी को निकालने का प्रयास करें, जिसे आपके वसंत-संदर्भ में .xsd के नवीनतम संस्करण में हल किया जाना चाहिए। जार। – zagyi

+0

क्षमा करें मैंने वसंत-संदर्भ एक बदल दिया है। मैंने कोशिश की है कि आपने अभी तक कोई भाग्य नहीं कहा है। – Sagarmichael

उत्तर

22

बहुत अधिक संभावना क्या है जो कस्टम नामस्थान हैंडलर (spring.schema, spring.handlers) के स्थान के बारे में स्प्रिंग में मेटा डेटा प्रदान करता है, जब आप बड़े (uber) जार बनाते हैं तो एक-दूसरे को ओवरराइट कर देते हैं । आप संदर्भ नाम अंतरिक्ष उपयोग कर रहे हैं

, यह एक छोटे से अधिक स्पष्ट करने के लिए कहते हैं - context:property-placeholder-configurer, कैसे spring-context.jar!:/META-INF/spring.handlers फ़ाइल में इस नाम स्थान पार्स करने के लिए एक spring.handlers फ़ाइल उपयोग कर रहा है के बारे में जानकारी, एक ऐसी ही फ़ाइल अन्य वसंत जार में मौजूद है अन्य कस्टम नेमस्पेस समर्थन के लिए फ़ाइलें। अब, जब आप उबर जार बनाते हैं, क्योंकि हैंडलर फ़ाइल का स्थान बिल्कुल वही है, तो एक spring.handler फ़ाइल दूसरों को ओवरराइट कर देगी, और आप जो त्रुटि देख रहे हैं उसे देखते हैं।कुछ संभावित सुधारों यहां बताई गई हैं, जहां निष्पादन योग्य जार बनाने के कुछ वैकल्पिक तरीके का सुझाव दिया है:

How to create spring-based executable jar with maven?

संबंधित मुद्दे

 संबंधित मुद्दे