【问题标题】:JSF 2.0 and TransformerFactoryJSF 2.0 和 TransformerFactory
【发布时间】:2011-04-17 05:37:38
【问题描述】:

我将在我的 JSF 2.0 项目中使用 Saxon-B 9。但是在添加对 Saxon & Saxon-dom 的依赖后,启动时开始出现异常:

2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.jetty.JettyLogger info INFO:登录到 JettyLogger(null) 通过 com.google.apphosting.utils.jetty.JettyLogger 2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml 信息:成功 处理 /home/chardex/projects/metabus/trunk/clients/export/target/articats/export_exploded/WEB-INF/appengine-web.xml 2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml 信息:成功 处理 /home/chardex/projects/metabus/trunk/clients/export/target/articats/export_exploded/WEB-INF/web.xml 2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.jetty.JettyLogger 信息信息:jetty-6.1.x 2010 年 9 月 25 日 下午 6:05:46 com.sun.faces.config.ConfigureListener contextInitialized INFO:正在初始化 Mojarra 2.0.0 (RC2 b22) 用于上下文'' 2010 年 9 月 25 日下午 6:05:48 com.sun.faces.config.ConfigManager 初始化信息:未消毒 启动失败的堆栈跟踪... > com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z 在 com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:670) 在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:306) 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:219) 在 org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) 在 org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 在 org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 在 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 在 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 在 org.mortbay.jetty.Server.doStart(Server.java:224) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:185) 在 com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:147) 在 com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219) 在 com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:164) 在 com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) 在 com.google.appengine.tools.development.DevAppServerMain.(DevAppServerMain.java:113) 在 com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) 造成的: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z 在 java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 在 java.util.concurrent.FutureTask.get(FutureTask.java:111) 在 com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:668) ... 25 更多原因: java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z 在 net.sf.saxon.dom.NodeWrapper$ChildEnumeration.(NodeWrapper.java:1079) 在 net.sf.saxon.dom.NodeWrapper.iterateAxis(NodeWrapper.java:722) 在 net.sf.saxon.instruct.ApplyTemplates.defaultAction(ApplyTemplates.java:375) 在 net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:333) 在 net.sf.saxon.Controller.transformDocument(Controller.java:1807) 在 net.sf.saxon.Controller.transform(Controller.java:1621) 在 com.sun.faces.config.ConfigManager$ParseTask.getDocument(ConfigManager.java:906) 在 com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:831) 在 com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:787) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166) 在 com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:656) ... 25 更多 2010 年 9 月 25 日下午 6:05:48 com.google.apphosting.utils.jetty.JettyLogger 警告警告

但我仍然不使用该库,也不明白 JSF 为何开始使用它。我试图从 saxon jar 中删除文件 javax.xml.transform.TransformerFactory,但没有帮助。

【问题讨论】:

  • 如果从参数 -Djavax.xml.transform.TransformerFactory="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl" 开始,它会修复。但是如何在配置文件或 Google App Engine 上进行设置?

标签: java jsf jsf-2 saxon jaxp


【解决方案1】:

Saxon 已经在类路径中,但您显然在类路径中添加了一个过时的版本,缺少NoSuchMethodError 消息中提到的方法。

很可能 Saxon 已经在类路径中的标准库中。 Saxon 是 JAXP 实现之一。 JSF 使用 JAXP 来解析 faces-config.xml 文件。

要解决此特定问题,只需从您手动添加到类路径的类路径中删除过时版本的 Saxon,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 2013-03-08
    • 2011-02-27
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2011-07-14
    相关资源
    最近更新 更多