2016-03-30 13 views
1


をスタックトレースは、現在のフレームワーク2.5を再生と組み合わせるプレイpac4jライブラリとsproblem。プレイpac4j:@RequiresAuthentication注釈原因は私が持っている

注釈:私のコントローラメソッドで

@RequiresAuthentication(clientName = "FacebookClient") 

このスタックトレースが発生します。

`

java.lang.NoClassDefFoundError: play/libs/F$Function 
     at java.lang.Class.getDeclaredConstructors0(Native Method) 
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
     at java.lang.Class.getDeclaredConstructors(Class.java:2020) 
     at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245) 
     at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:99) 
     at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:658) 
     at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:882) 
     at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805) 
     at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282) 
     at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214) 
Caused by: java.lang.ClassNotFoundException: play.libs.F$Function 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at java.lang.Class.getDeclaredConstructors0(Native Method) 
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
     at java.lang.Class.getDeclaredConstructors(Class.java:2020) 
     at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245) 
     at 

com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:99 ) at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:658

) 
      at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:882) 

`

これは私が依存関係を使用して私のbuild.sbtからの断片である:

libraryDependencies ++= Seq(
     "org.pac4j" % "play-pac4j" % "2.1.0", 
     "org.pac4j" % "pac4j" % "1.8.7", 
     "org.pac4j" % "pac4j-http" % "1.8.7", 
     "org.pac4j" % "pac4j-cas" % "1.8.7", 
     "org.pac4j" % "pac4j-openid" % "1.8.7", 
     "org.pac4j" % "pac4j-oauth" % "1.8.7", 
     "org.pac4j" % "pac4j-saml" % "1.8.7", 
     "org.pac4j" % "pac4j-oidc" % "1.8.7", 
     "org.pac4j" % "pac4j-gae" % "1.8.7", 
     "org.pac4j" % "pac4j-jwt" % "1.8.7", 
     "org.pac4j" % "pac4j-ldap" % "1.8.7", 
     "org.pac4j" % "pac4j-sql" % "1.8.7", 
     "org.pac4j" % "pac4j-mongo" % "1.8.7", 
     "org.pac4j" % "pac4j-stormpath" % "1.8.7") 

マイSecurityModuleクラス:

public class SecurityModule extends AbstractModule { 
protected void configure() { 
    FacebookClient facebookClient = new FacebookClient("KEY", "SECRET_KEY"); 
    Clients clients = new Clients("http://localhost:9000/callback",facebookClient); 
    Config config = new Config(clients); 
    config.addAuthorizer("admin",new RequireAnyRoleAuthorizer("ROLE_ADMIN")); 
    bind(Config.class).toInstance(config); 

} 

}

パッケージプレイ.libs.Fは私のプロジェクトで利用可能です。 Eclipse screenshot

私は基本的に何が私の心に来るかを試します。ちょうど私は、ルート設定ファイルの私の住所の一つのためにfacebookで簡単な認証を有効にしたいです。 私はここに掲示された指導に従っていた:https://github.com/pac4j/play-pac4j。 ヘルプとヒントをお待ちしております。

答えて

2

問題ページhereを見ると、pac4jはPlay 2.5と互換性がありません。 pac4jが使用している2.5の欠けているAPIがあるようです。あなたのスタック取引で見ているのは、Play 2.5のスカラーf.Functionf.Function0クラスなどのJava 8 java.util.function.*タイプの優先度の削除です。その上のドコはhereです。

つまり、pac4j 2.3.0が出るのを待つか、Play 2.4に戻ってください。

+0

ありがとうございました!私はそれがいくつかのバージョンの不一致に関連する可能性があると思った。 pac4j 2.3.0が期待できるところであれば、どこの情報ですか? – bero

+0

私には分かりません。 2.5互換性の問題は、23日前に発生しただけです。 2.2は現在開発中ですので、2.3にはまだ日付がありません。 – AndyN

関連する問題