Can you recompile your FMSOutboundRoutesTest with Camel 2.13.x? There is the explanation[1] in the stack overflow.
[1]http://stackoverflow.com/questions/1980452/what-causes-java-lang-incompatibleclasschangeerror -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On June 18, 2014 at 5:32:44 AM, rrajen2 (rrajend...@capario.com) wrote: > Hi > Earlier we were using CamelSpringTestSupport based Junit test cases to test > the Camel route based on Camel 2.11 and everything worked fine. Recently we > upgraded Camel to 2.13 and we started getting the below error. Could you > please advice? > > java.lang.IncompatibleClassChangeError > at org.apache.camel.util.IOHelper.close(IOHelper.java:326) > at org.apache.camel.util.IOHelper.close(IOHelper.java:390) > at > org.apache.camel.test.spring.CamelSpringTestSupport.tearDown(CamelSpringTestSupport.java:118) > > at > com.xxx.phoenix.fms.routes.FMSOutboundRoutesTest.tearDown(FMSOutboundRoutesTest.java:62) > > ........................ > ....................... > > > Gist of FMSOutboundRoutesTest.java: > ------------------------------------------------ > //@SuppressWarnings("UnusedDeclaration") > public class FMSOutboundRoutesTest extends CamelSpringTestSupport { > > private BrokerService brokerService; > > //Todo: I would like to be able to get this from the exchange > @SuppressWarnings("FieldCanBeLocal") > private static final String TEST_PATH = "\\99\\99\\99999999\\"; > > @Override > public void setUp() throws Exception { > super.setUp(); > > TestUtils.resetPathProperties(context()); > > > System.getProperties().load(ClassLoader.getSystemResourceAsStream("activemq.properties")); > > String uri = > String.valueOf(ClassLoader.getSystemResource("activemq.xml").toURI()).replace("file:","xbean:"); > brokerService = BrokerFactory.createBroker(uri); > context.addComponent("edifecs", new EdifecsValidationComponent()); > /*RouteDefinition routeDefinition = > context.getRouteDefinition("InFMSReaderSMTPRoute"); > routeDefinition.adviceWith(context, new RouteBuilder() > { > @Override > public void configure() throws Exception > { > interceptSendToEndpoint("smtp://{{fmsSys.SMTP.userId}}*") > .skipSendToOriginalEndpoint() > .log("Testing InFMSReader") > .to("mock:InFMSReaSMTP"); > } > });*/ > } > > @Override > protected AbstractApplicationContext createApplicationContext() { > return new ClassPathXmlApplicationContext("CamelSpring.xml"); > } > > @Override > public void tearDown() throws Exception { // Stop the broker when > testing is done. > super.tearDown(); > if (brokerService != null) { > brokerService.stop(); > brokerService = null; > } > } > > @Override > public boolean isUseAdviceWith() { > return true; > } > > @Test > public void testClientOutboxReader() throws Exception { > RouteDefinition routeDefinition = > context.getRouteDefinition("PeteOutboxReader"); > routeDefinition.adviceWith(context, new RouteBuilder() > { > @Override > public void configure() throws Exception > { > interceptSendToEndpoint("seda:LoadFileMessageFromFile") > .skipSendToOriginalEndpoint() > .log("Testing ClientOutboxReader") > .to("mock:copy"); > } > }); > > //Now start it...since we are overwriting isUseAdviceWith (returning > true), we have to start it manually > context.start(); > > //Get rid of any files in the test path already > deleteDirectory(CamelUtils.getCamelSystemProperty(context, > "fmsSys.root.File.InProgress.Out").concat(TEST_PATH)); > > //Send the files -- I want make sure the files are there before it > start to pick up > > template.sendBodyAndHeader("file:{{fmsSys.root.PETE.Outbox}}".concat(TEST_PATH).concat("rec"), > > "test", Exchange.FILE_NAME, "test1.xml"); > > template.sendBodyAndHeader("file:{{fmsSys.root.PETE.Outbox}}".concat(TEST_PATH).concat("infms"), > > "test", Exchange.FILE_NAME, "test2.xml"); > > template.sendBodyAndHeader("file:{{fmsSys.root.PETE.Outbox}}".concat(TEST_PATH).concat("infms"), > > "test", Exchange.FILE_NAME, "test3.xml"); > > template.sendBodyAndHeader("file:{{fmsSys.root.PETE.Outbox}}".concat(TEST_PATH).concat("rec"), > > "test", Exchange.FILE_NAME, "test4.xml"); > > //Now Let's validate all the conditions > //There should be one Message > MockEndpoint mock = getMockEndpoint("mock:copy"); > //This test is now sending only one message...we are sending really > 3, but the other 2 should not be picked up > //since they are in the exclude folders > mock.expectedMessageCount(2); > //Todo: Figure out how to get this path dynamically rather than hard > coded...from the header > //The file should be in the IN PROGRESS root > mock.expectedFileExists(CamelUtils.getCamelSystemProperty(context, > "fmsSys.root.File.InProgress.Out") + > TEST_PATH + "rec\\test1.xml"); > mock.expectedFileExists(CamelUtils.getCamelSystemProperty(context, > "fmsSys.root.File.InProgress.Out") + > TEST_PATH + "rec\\test4.xml"); > //files should be read the older file first -- I have to use > ascending since it compares who is bigger not older > mock.expectsAscending(header("CamelFileLastModified")); > > //Let's give it a couple of seconds > Thread.sleep(2000); > //Check all the conditions for me please ma'am > assertMockEndpointsSatisfied(); > } > > ................ > ............... > } > > The error happens in the tearDown's super.tearDown() call. > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/IncompatibleClassChangeError-tp5752456.html > > Sent from the Camel - Users mailing list archive at Nabble.com. >