【问题标题】:Application crashes after upgrading to play 2.2升级到 play 2.2 后应用程序崩溃
【发布时间】:2013-09-29 23:02:21
【问题描述】:

升级到play 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,升级插件 for play 2.2.0 和 sbt 0.13,vis-a-vis:

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

在启动时。

不知道如何解决这个问题,非常感谢。

【问题讨论】:

  • 我遇到了同样的问题,我正在调查它......如果你有任何线索,请不要犹豫告诉我,这样我们就不会做两次同样的努力...... . 我会及时通知你我的进展

标签: scala sbt playframework-2.2


【解决方案1】:

好的,我发现了问题,这是与您项目的依赖项相关的问题。 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"。

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

【讨论】:

  • 我终于意识到有人在 lib 目录下放了一个 xerces jar,这把一切都搞砸了。
猜你喜欢
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2018-07-06
  • 1970-01-01
  • 2011-06-09
  • 2011-05-16
  • 1970-01-01
相关资源
最近更新 更多