如何从2.5.X升级发挥框架2.6.X斯卡拉当修复依赖注入(How to fix dependenc

2019-10-28 12:13发布

我试图从升级发挥2.5.X 2.6.3。 (因为2.5.X不支持WS。进口play.api.libs.ws.DefaultBodyWritables._抛出异常。多交的官方文档中的代码示例不起作用。编译器需要在身体Writables这是不提供到2.6.x的)

所以我改变了plugin.sbt版本2.6.3和更新SBT至0.13.15。 和编辑build.sbt文件,添加吉斯和JSON。 该项目编译罚款。 但是,当我开始与SBT运行,访问HTTP://本地主机:9000 ,它会抛出相关的jar文件我在本地lib /目录下一堆异常。 同样的代码工作只是罚款2.5.x.

这里的例外:

1)错误注入构造,java.lang.NoClassDefFoundError:COM /谷歌/普通/ util的/并行/ FutureFallback在db.ConcreteGGDB(ConcreteGGDB.scala:24)在Module.configure(Module.scala:29)(通过模块: com.google.inject.util.Modules $ OverrideModule - >模块),而定位db.ConcreteGGDB

如果这是关系到当地的罐子任何想法是不兼容的2.6.x? 或者我需要改变一些代码做其他的依赖注入比Module.scala文件中指定? 谢谢。

Answer 1:

为什么会出现在Java中的NoClassDefFoundError?

错误注入的构造函数,java.lang.NoClassDefFoundError:COM /叽叽喳喳/欺骗/ HTTP /法$得到$

NoClassDefFound意味着有你的代码需要一个类,但它无法找到它。 这通常发生在你的项目中传递地取决于图书馆的多个版本。 例如,假设您正在构建一个项目,这取决于LIB X,和项目B,这也取决于LIB X.然而,B项目建成对旧版本的LIB X,它曾经有过的一类,但它不再出口。

A => B => X(版本1)

A => X(第2版)

它运行然后当,A进行呼叫到B,它试图拨打电话到X,但由于该项目现在使用较新的版本,而不是旧版本,它不能找到它需要的类。

我会鼓励你使用SBT-依赖性的图表看你这取决于其及物动词[库名称]的版本,并确保每次使用库使用[库名称]的版本相同。

看起来与当地的广口瓶中的问题。



文章来源: How to fix dependency injection when upgrading play framework from 2.5.x to 2.6.x Scala