【问题标题】:cameltest case with beancameltest case with bean
【发布时间】:2015-01-04 15:54:36
【问题描述】:

在我的 java 类中,我有如下内容:

from("direct:dcrm:input")
        .routeId("dcrm-route"
        .convertBodyTo(Message.class)

        .setHeader(
                        "recipientListHeader",
                        simple("activemq:"+rdvrQueueName+ ".${body.controllerID}?jmsMessageType=Text&timeToLive="
                                + rdvrMessageTimeToLive 
                                + "&deliveryPersistent=" + deliveryPersistent))     

            .choice()
            .when(simple("${body.messageType} == 'rdvr'"))
            .bean(new DcrmMessageHandler(), "process")
            .marshal(requestMessage)
            .recipientList(header("recipientListHeader"))
            .onPrepare(new MesssageProcessor()).parallelProcessing()
            .end()
            .setBody(constant(StatusCode.SUCCESS))
            .otherwise()
            .endChoice();

在编写 Junit 时,我是这样的:

 @Test
        public void testSendMatchingMessage() throws Exception {
            String expectedBody = "<matched/>";

            resultEndpoint.expectedBodiesReceived(expectedBody);

            template.sendBodyAndHeader(expectedBody, "recipientListHeader", 0);

            resultEndpoint.assertIsSatisfied();
        }


    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        //return new DcrmOutboundRoute();
        return new RouteBuilder() {

            @Override
            public void configure() throws Exception {
                // TODO Auto-generated method stub
                from("direct:dcrm:input")
                .filter(header("recipientListHeader").isEqualTo(constant(StatusCode.SUCCESS)))
                .bean(new DcrmMessageHandler(), "process").to("mock:result");
            }
        };
    }

但我收到以下错误:

java.lang.ClassFormatError:类文件 javax/persistence/NoResultException 中非本机或抽象方法中的缺失代码属性 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358)

【问题讨论】:

    标签: apache-camel junit4 spring-batch


    【解决方案1】:

    检查您的类路径或 Maven 依赖项,尤其是引用 JPA (javax.persistence) 的那个。你应该有一个 groupId javax.persistence 和可能 artifactId persistence-api 的依赖,用 org.hibernate.javax.persistence 或 org.eclipse.persistence 依赖替换它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多