我从头开始创建一个Play 2 Java项目。我正在使用Apache的httpcomponent库并将它们添加到build.sbt。当我运行sbt build
时,我收到一条错误消息,指出“找不到符号”,指的是java文件中的包含。
导致问题的导入如下:
像oracle和gson这样的其他导入工作没有问题。
检查Ivy的缓存我找到了其他版本而不是那些版本。如果我将build.sbt中的版本号设置为Ivy中的版本,则仍无法找到导入。我删除了ivy2缓存,但它也没有帮助。
我使用Intellij 14,它也找不到依赖项。它提供了将它们添加到类路径并在此后成功找到它们。但是sbt仍然无法找到它们。
build.sbt:
lazy val root = (project in file(".")).enablePlugins(PlayJava)
resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"
resolvers += "Local Maven Repository" at "file://" + Path.userHome.absolutePath + "/.m2/repository"
name := """Bayeu2"""
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.6"
val httpComponentClient = "org.apache.httpcomponents" % "httpcomponents-client" % "4.5.+"
val httpComponentCore = "org.apache.httpcomponents" % "httpcomponents-core" % "4.4.+"
val oracle = "com.oracle" % "oracle" % "12.1.0.1"
val gson = "com.google.code.gson" % "gson" % "2.4"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
jdbc,
httpComponentClient,
httpComponentCore,
oracle,
gson
)
routesGenerator := InjectedRoutesGenerator
更新
我认为只有 org.apache.http 导入失败才是奇怪的。因此,我导入了一个不同的库来测试添加它是否有效。果然它确实如此。我目前的理论是Play使用 org.apache.http 本身或接口的其他实现,导致导致版本冲突失败。