我有一个使用 Play 2.0 创建的应用程序。我实现了 scribe-java 库来使用一些 OAuth 服务。直到今天一切都很好,但是当我升级 jdk 并重新启动服务器时,我无法使用 scribe-java 库。似乎它使用了一些类sun/security/pkcs11/P11Key
,如 sun.security 包中的 和sun/security/pkcs11/Length
,但找不到它。
“java -version”返回:
java版本“1.7.0_03”
OpenJDK 运行环境 (IcedTea7 2.1.1pre) (7~u3-2.1.1~pre1-1ubuntu3)
OpenJDK 64 位服务器 VM(构建 22.0-b10,混合模式)
玩 2.0 堆栈跟踪:
! @6bk5o8md2 - Internal server error, for request [GET /user/service/google/oauth_callback/?code=[SECRET]] ->
play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoClassDefFoundError: sun/security/pkcs11/P11Key]]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1.jar:2.0.2]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1.jar:2.0.2]
at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2]
at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.2]
at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.2]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.jar:2.0.2]
Caused by: java.lang.NoClassDefFoundError: sun/security/pkcs11/P11Key
at sun.security.pkcs11.P11ECKeyFactory.generatePublic(P11ECKeyFactory.java:234) ~[sunpkcs11.jar:na]
at sun.security.pkcs11.P11ECKeyFactory.implTranslatePublicKey(P11ECKeyFactory.java:103) ~[sunpkcs11.jar:na]
at sun.security.pkcs11.P11ECKeyFactory.engineGeneratePublic(P11ECKeyFactory.java:152) ~[sunpkcs11.jar:na]
at java.security.KeyFactory.generatePublic(KeyFactory.java:334) ~[na:1.7.0_03]
at sun.security.x509.X509Key.buildX509Key(X509Key.java:223) ~[na:1.7.0_03]
at sun.security.x509.X509Key.parse(X509Key.java:170) ~[na:1.7.0_03]