代码之家  ›  专栏  ›  技术社区  ›  user4821194

与元素类型“Hello”关联的属性名“from”必须后跟“=”字符。-阿帕奇骆驼

  •  1
  • user4821194  · 技术社区  · 10 年前

    我在发展 春天+阿帕奇骆驼 调度示例。我创造了 applicationContext.xml 并添加了 <camelContext> 但当我简单地运行我的主方法时。我看到以下错误。不确定XML文件中有什么错误。

    参考错误:

    INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
    Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 12 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 25; Attribute name "from" associated with an element type "Hello" must be followed by the ' = ' character.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:612)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:513)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at com.camel.scheduler.CamelTimerSimpleExampleUsingSpring.main(CamelTimerSimpleExampleUsingSpring.java:10)
    Caused by: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 25; Attribute name "from" associated with an element type "Hello" must be followed by the ' = ' character.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:418)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:255)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
        at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
        ... 14 more
    

    应用程序上下文.xml

    <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.xsd
                        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
    
        <camelContext xmlns="http://camel.apache.org/schema/spring">
            <route>
                <from uri="timer://simpleTimer?period=1000" />
                <setBody>
                    <simple>
                     <Hello from timer at $ header.firedTime } />
                    </simple>
                </setBody>
                <to uri="stream:out" />
            </route>
        </camelContext>
    </beans>
    

    CamelTimerSimple示例使用Spring.java

    public class CamelTimerSimpleExampleUsingSpring {
        public static void main(String[] args) {
            ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            CamelContext camelContext = null;
            try {
                camelContext = SpringCamelContext.springCamelContext(appContext, false);
    
                camelContext.start();
                Thread.sleep(3000);
    
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }finally {
                try {
                    camelContext.stop();
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
            }
        }
    }
    

    pom.xml文件

    <properties>
            <!-- General Properties -->
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
            <!-- Apache Camel -->
            <apache.camel.version>2.17.3</apache.camel.version>
    
            <!-- Spring Framework -->
            <spring.version>4.3.1.RELEASE</spring.version>
    
            <!-- MYSQL -->
            <mysql.version>5.1.39</mysql.version>
    
            <!-- Logging Framework -->
            <logback.version>1.1.7</logback.version>
            <jcl-over-slf4j.version>1.7.21</jcl-over-slf4j.version>
    
            <!-- Junit Framework -->
            <junit.version>4.12</junit.version>
        </properties>
    
    
    
        <dependencies>
            <!-- Camel core -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-core</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel stream -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-stream</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel spring -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-spring</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel JDBC -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-jdbc</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- Spring Context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <!-- Spring JDBC -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <!-- MYSQL -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
    
            <!-- logging, slf4j -->
            <!-- <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${jcl-over-slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency> -->
    
            <!-- JUnit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    2 回复  |  直到 9 年前
        1
  •  0
  •   Alexey Yakunin    10 年前

    <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.xsd
                        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
    
        <camelContext xmlns="http://camel.apache.org/schema/spring">
            <route>
                <from uri="timer://simpleTimer?period=1000" />
                <setBody>
                    <simple>Hello from timer at ${header.firedTime}</simple>
                </setBody>
                <to uri="stream:out" />
            </route>
        </camelContext>
    </beans>
    
        2
  •  0
  •   PAA    10 年前

    为了运行此代码,需要在pom.xml中进行以下更改。您应该首先使用spring依赖项,然后遵循pom。xml然后应用程序将获得spring-beans-4.2.5.RELEASE,它将给出原因: java.lang.ClassNotFoundException: org.springframework.beans.factory.config.EmbeddedValueResolver 。请使用下面建议的顺序和

    <dependencies>
            <!-- Spring Context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <!-- Spring JDBC -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- Camel core -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-core</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel stream -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-stream</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel spring -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-spring</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- camel JDBC -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-jdbc</artifactId>
                <version>${apache.camel.version}</version>
            </dependency>
    
            <!-- MYSQL -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
    
            <!-- logging, slf4j -->
            <!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> 
                <version>${jcl-over-slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> 
                <artifactId>logback-classic</artifactId> <version>${logback.version}</version> 
                </dependency> -->
    
            <!-- JUnit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    

    并使用更正

    <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.xsd
            http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
        <camelContext xmlns="http://camel.apache.org/schema/spring">
            <route>
                <from uri="timer://simpleTimer?period=1000" />
                <setBody>
                    <simple>Hello from timer at ${header.firedTime}</simple>
                </setBody>
                <to uri="stream:out" />
            </route>
        </camelContext>
    </beans>
    

    camelContext = SpringCamelContext.springCamelContext(appContext, false);
    

    方法已弃用,Alexey,您知道应该改用什么吗?