cvc-elt.1:使用initd运行时找不到元素'beans'的声明

时间:2012-08-14 05:47:04

标签: spring activemq init.d

我的activemq代理使用以下架构: -

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:amq="http://activemq.apache.org/schema/core"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
         http://www.springframework.org/schema/beans
         file:////u//amqgod//schema//spring-beans.xsd
         http://activemq.apache.org/schema/core
         file:////u//amqgod//schema//activemq.xsd">

如果我从命令行启动我的应用程序但是在通过initd机制启动时出现以下错误,它运行正常: -

错误:java.lang.RuntimeException:无法执行启动任务。原因:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:X中的第23行     来自URL [文件:/prod/tools/base/etc/config/activemq/amq_prod_broker_config.xml]的ML文档无效;嵌套异常是org.xml.sax.SAXParseException;升     ineNumber:23; columnNumber:52; cvc-elt.1:找不到元素'beans'的声明。     java.lang.RuntimeException:无法执行启动任务。原因:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:XML文档中的第23行     URL [file:/prod/tools/base/etc/config/activemq/amq_prod_broker_config.xml]无效;嵌套异常是org.xml.sax.SAXParseException; lineNumb     呃:23; columnNumber:52; cvc-elt.1:找不到元素'beans'的声明。             在org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:98)             在org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)             在org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:143)             在org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)             在org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:85)             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)             在java.lang.reflect.Method.invoke(Method.java:601)             在org.apache.activemq.console.Main.runTaskClass(Main.java:251)             在org.apache.activemq.console.Main.main(Main.java:107)     引起:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:来自URL的XML文档中的第23行

initd只是一个配置,可以在重启linux服务器时自动运行我的脚本。 请帮忙吗?

2 个答案:

答案 0 :(得分:0)

你的模式位置很奇怪:你为什么用一些文件指定xsd://?

保留原始的xsd(来自spring,apcache,...)。只需用http://替换file://,如下所示:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd   
  http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

答案 1 :(得分:0)

我对此有点迟。我遇到了类似的问题。这可以通过包含正确的依赖

来解决
<dependency>
   <groupId>org.apache.activemq</groupId>
   <artifactId>activemq-all</artifactId>
   <version>5.10.0</version>
</dependency>

或可以从here下载 要使xsd注册XBeanNamespaceHandler,这些配置已经完成( spring.handlers和spring.schemas存在于jar的META-INF文件夹中