2017-09-10 2 views
0

Je suis en train de passer du jeu 2.5.x à 2.6.3. (Parce que 2.5.x ne prend pas en charge post multipart dans WS. Play.api.libs.ws.DefaultBodyWritables._ import lance des exceptions. L'exemple de code dans le document officiel ne fonctionne pas. Le compilateur a besoin des Writables corps qui est pas jusqu'à 2.6.x fourni)Comment fixer l'injection de dépendance lors de la mise à niveau de jeu cadre de 2.5.x à 2.6.x Scala

Je changé la version plugin.sbt à 2.6.3 et modernisées SBT à 0.13.15. Et éditez le fichier build.sbt pour ajouter guice et json. Le projet compile bien. Mais quand j'ai commencé à courir SBT et visite http://localhost:9000, il jette un tas d'exception liée à un fichier jar je dans le répertoire lib/répertoire local. Le même code fonctionnait très bien avec 2.5.x.

est ici l'exception:

1) Error injecting constructor, java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback at db.ConcreteGGDB.(ConcreteGGDB.scala:24) at Module.configure(Module.scala:29) (via modules: com.google.inject.util.Modules$OverrideModule -> Module) while locating db.ConcreteGGDB

Toute idée si cela est lié à la jarre locale n'est pas compatible avec 2.6.x? ou je dois changer de code pour faire l'injection de dépendance autre que spécifier dans le fichier Module.scala? Merci.

Répondre

0

Why am I getting a NoClassDefFoundError in Java?

Error injecting constructor, java.lang.NoClassDefFoundError: com/twitter/finagle/http/Method$Get$

NoClassDefFound means that there's a class that your code needs, but it can't find it. This typically happens when your project transitively depends on more than one version of a library. For example, imagine that you're building project A, which depends on lib X, and project B, which also depends on lib X. However, project B was built against an older version of lib X, which used to have a class, but which it no longer exports.

A => B => X (version 1)

A => X (version 2)

Then when it runs, A makes a call into B, which tries to make a call into X, but because the project now uses the newer version instead of the older version, it can't find the class it needs.

I would encourage you to use sbt-dependency-graph to see which versions of [library name] you're depending on transitively, and ensure that every library you use uses the same version of [library name].

On dirait un problème avec le pot local.