/ / Wie man die Abhängigkeitsinjektion beim Upgrade des Play Frameworks von 2.5.x auf 2.6.x Scala - Scala, Abhängigkeitsinjektion, Playframework-2.0

Wie man die Abhängigkeitsinjektion beim Upgrade des Play Frameworks von 2.5.x auf 2.6.x Scala - scala, Abhängigkeitsinjektion, playframework-2.0 behebt

Ich versuche ein Upgrade von Spiel 2.5.x auf 2.6.3 durchzuführen. (Da 2.5.x keine mehrteiligen Posten in WS unterstützt. Import play.api.libs.ws.DefaultBodyWritables._ löst Ausnahmen aus. Das Codebeispiel im offiziellen Dokument funktioniert nicht. Der Compiler benötigt Body Writables, was nicht der Fall ist bereitgestellt bis 2.6.x)

Also habe ich die plugin.sbt-Version auf 2.6.3 geändert und sbt auf 0.13.15 aktualisiert. Bearbeiten Sie die Datei build.sbt, um Guice und Json hinzuzufügen. Das Projekt wird gut kompiliert. Aber als ich mit sbt angefangen habe, zu laufen und zu besuchen http://localhost:9000, wirft eine Reihe von Ausnahmen in Zusammenhang mit einer JAR-Datei, die ich im lokalen Verzeichnis lib / habe. Derselbe Code hat mit 2.5.x gut funktioniert.

Hier ist die Ausnahme:

1) Fehler beim Einfügen des Konstruktors java.lang.NoClassDefFoundError: com / google / common / util / concurrent / FutureFallback bei db.ConcreteGGDB. (ConcreteGGDB.scala: 24) bei Module.configure (Module.scala: 29) (über Module: com.google.inject.util.Modules $ OverrideModule -> Modul) beim Suchen von db.ConcreteGGDB

Irgendeine Idee, ob dies mit dem lokalen Jar zusammenhängt, ist nicht kompatibel mit 2.6.x? oder muss ich etwas Code ändern, um eine Abhängigkeitseingabe durchzuführen, die nicht in der Datei Module.scala angegeben ist Vielen Dank.

Antworten:

0 für die Antwort № 1

Warum erhalte ich in Java einen NoClassDefFoundError?

Fehler beim Einfügen des Konstruktors java.lang.NoClassDefFoundError: com / twitter / finagle / http / Method $ Get $

NoClassDefFound bedeutet, dass eine Klasse das istDein Code braucht aber Es kann es nicht finden. Dies geschieht normalerweise, wenn Ihr Projekt ausgeführt wird hängt von mehreren Bibliotheksversionen ab. Zum Stellen Sie sich beispielsweise vor, Sie bauen Projekt A, das von lib abhängt X und Projekt B, das auch von Lib X abhängt. Projekt B war jedoch gebaut gegen eine ältere Version von lib X, die früher eine Klasse hatte, aber das es nicht mehr exportiert.

A => B => X (Version 1)

A => X (Version 2)

Wenn er läuft, ruft A dann B an, was versucht, einen Anruf zu tätigen in X, aber weil das Projekt jetzt die neuere Version verwendet In der älteren Version kann sie nicht die Klasse finden, die sie benötigt.

Ich möchte Sie dazu ermutigen, den sbt-Abhängigkeitsgraphen zu verwendenum zu sehen was Versionen von [Bibliotheksname] sind von Ihnen abhängig, und stellen dies sicher Jede von Ihnen verwendete Bibliothek verwendet dieselbe Version von [Bibliotheksname].

Sieht aus wie ein Problem mit dem lokalen Glas.