我有一个使用maven构建的spring项目(打包为jar)(依赖项被复制到一个单独的目录并添加到classpath中)
我想以java -jar
运行它问题在于,当我运行它时,我得到:
引起:org.xml.sax.SAXParseException:cvc-elt.1:找不到声明 元素'豆'。
这是因为spring.schemas和spring.handlers位于几个罐子里,即:弹簧豆等。
有没有办法解决它,假设我不想使用shade插件来解压所有依赖项并连接spring.schemas和spring.handlers的内容?
我还想避免在我的项目中保存xsd文件并将schemaLocation更改为指向我的位置。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camel:camelContext>
<camel:routeBuilder ref="fakeRouteBuilder"/>
</camel:camelContext>
<bean id="fakeRouteBuilder" class="<className>" />
</beans>
答案 0 :(得分:24)
我知道有两种情况可以解决这个问题
xsi:schemaLocation=" http://www.springframework.org/schema/beans spring-beans-2.5.xsd ..."
答案 1 :(得分:8)
我认为XSD将成为弹簧罐的一部分,所以不应该是问题。
答案 2 :(得分:5)
Spring jar包含META-INF / spring.handlers和META-INF / spring.schemas文件。为了避免在将依赖项聚合到一个jar时覆盖文件,可以使用maven Shade插件:
答案 3 :(得分:2)
遇到同样的问题因为我在代理后面。我在Tomcat 6下运行了一个Spring MVC应用程序。只需在我的 catalina.bat 文件中添加以下行,这就解决了我的问题:
set JAVA_OPTS=%JAVA_OPTS% -Dhttp.proxyHost=XXXX -Dhttp.proxyPort=YYYYY -Dhttp.proxyUser=ZZZZ -Dhttp.proxyPassword=XXXXXX
答案 4 :(得分:1)
我能够通过清除远程资源缓存中的xsd文件来解决类似的问题,Window&gt;偏好&gt;一般&gt;网络连接&gt;高速缓存
答案 5 :(得分:1)
META-INF/INDEX.LIST
文件也可能是罪魁祸首。
原因:Java错误:&#34; ClassLoader.getResources()在使用jar索引时只返回1个实例&#34;
解决方案:禁用程序集描述符中的索引:
<indexed>false</indexed>
资源: Spring JIRA SPR-5705 JDK-6957241 ClassLoader.getResources() returns only 1 instance when using jar indexing
答案 6 :(得分:0)
您的XSD声明中有http://
太多了。试试这个:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
(你的是http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
)
答案 7 :(得分:0)
当我的XSD url指向与jar文件中定义的XSD位置不同的不同位置时,我收到了该错误。例如,spring-beans-3.0.xsd
而非spring-beans-2.5.xsd
反之亦然。
答案 8 :(得分:0)
您也可以使用here的建议来解决此问题
答案 9 :(得分:0)
我有完全相同的问题,我认为这是由两个主要原因引起的: