【发布时间】:2016-04-08 13:56:05
【问题描述】:
我最近获得了 Saxon-PE 的试用许可证,并希望在 Camel 中使用此版本的 Saxon。我下载了 Saxon-PE-9.6.0.8 jar 并通过 maven 将它们包含到我的项目中。我正在使用骆驼 2.16.0。 我已经尝试了很多方法,但我通过使用 Camel 的“?transformerFactory=...”选项并将其传递给 Saxon 的 ProfessionalTransformerFactoryImpl 取得了最大的进展,它在我的 Spring 配置中注册为 bean。
启动我的应用程序时,使用 xslt 转换的路由初始化失败,并显示以下堆栈跟踪:
原因:java.lang.IllegalStateException: 预加载 Saxon 时出错 类。确保类路径中有撒克逊人,并且 classloader 可以加载以下两个类: net.sf.saxon.event.Receiver,net.sf.saxon.serialize.MessageWarner。在 org.apache.camel.builder.xml.XsltBuilder.doStart(XsltBuilder.java:618) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:74) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.component.xslt.XsltEndpoint.doStart(XsltEndpoint.java:396) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:3219) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:1209) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1170) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1166) ~[camel-core-2.16.0.jar:2.16.0] 在 org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:583) ~[camel-core-2.16.0.jar:2.16.0] ...省略了38个常用框架导致 通过:java.lang.NoSuchMethodException: net.sf.saxon.jaxp.TransformerImpl.setMessageEmitter(net.sf.saxon.event.Receiver) 在 java.lang.Class.getMethod(Class.java:1786) ~[na:1.8.0_45] 在 org.apache.camel.builder.xml.XsltBuilder.doStart(XsltBuilder.java:616) ~[camel-core-2.16.0.jar:2.16.0] ...省略了47个常用框架
问题在于 JAXP TransformerImpl 中不存在 setMessageEmitter() 方法。
如果有人有任何将 Saxon-PE/EE 与骆驼集成的经验,我将不胜感激。我需要 Saxon-PE 才能使用我的 xsl 样式表中的外部函数调用。以前,在同一个项目中,我使用 Saxon-HE(通过 camel-saxon maven 依赖项)没有任何问题。只有在切换到 Saxon-PE 时才会出现此问题。
我可以提供任何其他可能有帮助的细节。 提前致谢。
【问题讨论】:
标签: java apache-camel saxon