使用spring做java的swing客户端报错:找不到元素 'beans' 的声明 或者 找不到元素 'tx' 的声明。
使用Java语言编写Swing客户端,其中用到事物TX,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:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
?
结果在运行时报错:找不到元素 'beans' 的声明。
?
原因分析:xsd文件加载异常。在spring的jar包中org.springframework.beans-3.1.0.M2.jar、org.springframework.transaction-3.1.0.M2.jar存在三个文件,spring.handlers,spring.schemas,spring.tooling,他们位于org.springframework.beans.factory.xml目录下;由于开发swing客户端,在导出最终的jar包时三个文件被多个jar包中的同名文件依次覆盖,导致配置缺失(只存在事物配置 或 只存在beans配置)。
?
解决方案:
?
新建三个文件,把beans配置和事物配置都写进去,分别如下:
?
spring.handlers
#beans支持http\://www.springframework.org/schema/c=org.springframework.beans.factory.xml.SimpleConstructorNamespaceHandlerhttp\://www.springframework.org/schema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandlerhttp\://www.springframework.org/schema/util=org.springframework.beans.factory.xml.UtilNamespaceHandler#事物支持http\://www.springframework.org/schema/tx=org.springframework.transaction.config.TxNamespaceHandler
?
spring.schemas
#beans支持http\://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsdhttp\://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsdhttp\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsdhttp\://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsdhttp\://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsdhttp\://www.springframework.org/schema/tool/spring-tool-2.0.xsd=org/springframework/beans/factory/xml/spring-tool-2.0.xsdhttp\://www.springframework.org/schema/tool/spring-tool-2.5.xsd=org/springframework/beans/factory/xml/spring-tool-2.5.xsdhttp\://www.springframework.org/schema/tool/spring-tool-3.0.xsd=org/springframework/beans/factory/xml/spring-tool-3.0.xsdhttp\://www.springframework.org/schema/tool/spring-tool-3.1.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsdhttp\://www.springframework.org/schema/tool/spring-tool.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsdhttp\://www.springframework.org/schema/util/spring-util-2.0.xsd=org/springframework/beans/factory/xml/spring-util-2.0.xsdhttp\://www.springframework.org/schema/util/spring-util-2.5.xsd=org/springframework/beans/factory/xml/spring-util-2.5.xsdhttp\://www.springframework.org/schema/util/spring-util-3.0.xsd=org/springframework/beans/factory/xml/spring-util-3.0.xsdhttp\://www.springframework.org/schema/util/spring-util-3.1.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsdhttp\://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd#事物支持http\://www.springframework.org/schema/tx/spring-tx-2.0.xsd=org/springframework/transaction/config/spring-tx-2.0.xsdhttp\://www.springframework.org/schema/tx/spring-tx-2.5.xsd=org/springframework/transaction/config/spring-tx-2.5.xsdhttp\://www.springframework.org/schema/tx/spring-tx-3.0.xsd=org/springframework/transaction/config/spring-tx-3.0.xsdhttp\://www.springframework.org/schema/tx/spring-tx-3.1.xsd=org/springframework/transaction/config/spring-tx-3.1.xsdhttp\://www.springframework.org/schema/tx/spring-tx.xsd=org/springframework/transaction/config/spring-tx-3.1.xsd
?
?
spring.tooling
# Tooling related information for the beans namespacehttp\://www.springframework.org/schema/beans@name=beans Namespacehttp\://www.springframework.org/schema/beans@prefix=beanshttp\://www.springframework.org/schema/beans@icon=org/springframework/beans/factory/xml/spring-beans.gif# Tooling related information for the util namespacehttp\://www.springframework.org/schema/util@name=util Namespacehttp\://www.springframework.org/schema/util@prefix=utilhttp\://www.springframework.org/schema/util@icon=org/springframework/beans/factory/xml/spring-util.gif# Tooling related information for the tx namespacehttp\://www.springframework.org/schema/tx@name=tx Namespacehttp\://www.springframework.org/schema/tx@prefix=txhttp\://www.springframework.org/schema/tx@icon=org/springframework/transaction/config/spring-tx.gif
?
?用rar查看软件打开swing导出的最终的jar包,把上面三个文件推拽近最终jar包的META-INF目录下,覆盖里面存在的三个文件,问题即可以解决了。

?
?
?