2

升级到玩 2.2 后,我收到以下错误:

org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.
at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
at play.api.Play$.<init>(Play.scala:45)
at play.api.Play$.<clinit>(Play.scala)
at play.core.server.NettyServer$$anonfun$12.apply(NettyServer.scala:152)
at play.core.server.NettyServer$$anonfun$12.apply(NettyServer.scala:151)
at scala.Option.foreach(Option.scala:236)
at play.core.server.NettyServer.<init>(NettyServer.scala:151)
at play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:310)
at play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:308)
at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
at play.core.server.NettyServer$.mainDev(NettyServer.scala:307)
at play.core.server.NettyServer$.mainDevHttpMode(NettyServer.scala:303)
at play.core.server.NettyServer.mainDevHttpMode(NettyServer.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.apply(PlayRun.scala:233)
at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.apply(PlayRun.scala:91)
at scala.Function7$$anonfun$tupled$1.apply(Function7.scala:35)
at scala.Function7$$anonfun$tupled$1.apply(Function7.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)

我在 OS X 上运行,来自 Oracle 的最新 JDK,升级插件用于 play 2.2.0 和 sbt 0.13,相对于:

"play 2.2.0 built with Scala 2.10.2 (running Java 1.7.0_40), http://www.playframework.com"

在启动时。

无法弄清楚如何解决此问题,非常感谢您的帮助。

4

1 回答 1

3

好的,我发现了问题,这是与您项目的依赖项相关的问题。Play 2.2.0 是在 XercesImpl 2.11.0 上交付的。

在 Play.Scala 第 45 行中,有以下几行:

    SAXParserFactory.newInstance("org.apache.xerces.jaxp.SAXParserFactoryImpl", Play.getClass.getClassLoader)

...

// new line in play2.2.0
xercesSaxParserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true)

因此,如果您的项目中有另一个库依赖于旧版本的 XercesImpl(如我的情况),则类加载器可能使用不支持“XMLConstants.FEATURE_SECURE_PROCESSING”的旧“org.apache.xerces.jaxp.SAXParserFactoryImpl” ”。

您应该分析您的部门并尝试找到导致问题的依赖项。就我而言,这很棘手,因为这是一个旧的,不再受支持的库,它需要一个旧的 Xerces ......这不是一个简单的解决方案:(

于 2013-09-25T16:58:35.893 回答