当前位置: 首页 > 知识库问答 >
问题:

无法定位Spring NamespaceHandler错误

龚勇锐
2023-03-14

我已经有这个错误将近一个星期了,现在我正准备让步。我已经使用Maven2制作了这个大的jar文件。当我使用以下命令运行jar文件时:

 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个IDE和命令行)删除了所有jar依赖关系冲突(我有spring-2.5.6.jar和spring-context-3.0.5.release.jar,所以我删除了spring-2.5.6.jar)

将http://www.springframework.org/schema/beans/spring-beans-2.5.xsd更改为http://www.springframework.org/schema/beans/spring-beans-3.0.xsd。

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

有人有什么想法吗。

共有1个答案

司徒胤
2023-03-14

很可能发生的情况是,当您创建big(uber)JAR时,向Spring提供有关自定义命名空间处理程序位置的元数据的文件(Spring.schema,Spring.handlers)最终相互覆盖。

为了进一步阐明这一点,如果您使用上下文名称空间,比如-context:property-placeholder-configurer,关于如何解析此命名空间的信息是使用spring-context.jar!:/meta-inf/spring.handlers文件中的spring.handlers文件,对于其他自定义命名空间支持,其他spring jar文件中也有类似的文件。现在,当您创建Uber jar时,由于处理程序文件的位置完全相同,一个spring.handler文件最终将覆盖其他文件,您将看到您所看到的错误。这里描述了一些潜在的修复,并建议了一些创建可执行jar的替代方法:

如何用Maven创建基于Spring的可执行jar?

 类似资料:
  • 我正在使用安装在Program文件中的windows 8 java。我收到这样的错误"无法定位tools.jar.预计在C:\Program Files(x86)\Java\jre1.8中找到它。0_40\lib\tools.jar" 在创建2个系统变量为"JAVA_HOME",路径为'C:\Program Files\Java\jdk1.8.0_40'和"ANT_HOME",路径为'D:\Sof

  • 当我简单地运行以下代码时,我总是得到这个错误。 我已将我的证书文件保存在 ,Boto应从中读取我的凭据。 我的设置有错吗? 下面是boto3.set\u stream\u logger('botocore',level='DEBUG')的输出。

  • 目前正在开发web应用程序(Spring)。尝试为应用程序设置引导测试表,并将各种主题应用于该表。然而,似乎无法定位引导。我不知道这是一个简单的“我输入了错误的路径”问题,还是一个更大的设置问题。 我的文件布局目前如下: 我尝试了完全限定的名称,只是从资产部分,交换'/'s输入和输出,没有运气。我查看了引导留档,但如果您不使用CDN链接,则没有多少,这是我不能的。 和 除其他外,该表仍然看起来没有

  • 我在互联网上到处搜寻这个问题的答案。我意识到LWJGL3仍在开发中,但除了我之外,似乎没有其他人有这个问题。我有一台Mac和一台PC,我喜欢用Java和LWJGL开发,因为它应该是跨平台的。然而,该应用程序在PC上运行正常,但当我在Mac上运行并调试时,我会在控制台中看到: 我相信“找不到…”在总账期间发生。createCapabilities()调用。因此,我认为这会导致OpenGL初始化失败,

  • 我重构了light webapp,现在使用Compojure。当地一切正常。但是,当我部署到Heroku时,问题就出现了。我正在尝试使用

  • 我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html: