【问题标题】:SBT fails to resolve dependency for jersey-container-grizzly2-http 2.5.1SBT 无法解决 jersey-container-grizzly2-http 2.5.1 的依赖关系
【发布时间】:2017-12-06 15:54:02
【问题描述】:

我对 Scala 和 SBT 还很陌生。我想使用 Jersey JAX-RS 和 Scala 实现一个 REST 服务器,但是在尝试配置 SBT 时遇到了第一个障碍。我打算使用 Grizzly HTTP 服务器。 build.sbt如下:

name := "scala-jersey-server"

version := "1.0"

scalaVersion := "2.10.3"

libraryDependencies += "org.glassfish.jersey.containers" % "jersey-container-grizzly2-http" % "2.5.1"

运行 sbt update 失败并显示以下消息

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.glassfish.hk2#hk2-utils;2.5.1: not found
[warn]  :: org.glassfish.hk2#hk2-locator;2.5.1: not found
[warn]  :: javax.validation#validation-api;${javax.validation.version}: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

查看hk2-apipom.xml,它使用${project.version} 变量显示对hk2-utils 的依赖,但我预计SBT 不会请求hk2-utils 的2.2.0-b21 版本2.5.1(这是 JAX-RS 版本)。

<dependency>
   <groupId>org.glassfish.hk2</groupId>
   <artifactId>hk2-utils</artifactId> 
   <version>${project.version}</version>
</dependency>

这是hk2-api的pom.xml配置有问题吗,是SBT使用了错误的版本还是别的什么?

【问题讨论】:

    标签: scala jersey jax-rs sbt


    【解决方案1】:

    我认为您的 2.5.1 版本的依赖项的发布链中存在错误。

    至少有三种可能:

    1.使用其他版本

    //http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.glassfish.jersey.containers%22%20AND%20a%3A%22jersey-container-grizzly2-http%22
    libraryDependencies += "org.glassfish.jersey.containers" % "jersey-container-grizzly2-http" % "2.5"
    

    2。使用其他库

    3.排除损坏的依赖项并设置工作版本 使用http://search.maven.org/ 查找现有版本。

    libraryDependencies += "org.glassfish.jersey.containers" % "jersey-container-grizzly2-http" % "2.5.1" exclude("org.glassfish.hk2", "hk2-utils") exclude("org.glassfish.hk2", "hk2-locator") exclude("javax.validation", "validation-api")
    
    //http://search.maven.org/#browse%7C703203458
    libraryDependencies += "org.glassfish.hk2" % "hk2-utils" % "2.2.0-b27"
    
    //http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22hk2-locator%22
    libraryDependencies += "org.glassfish.hk2" % "hk2-locator" % "2.2.0-b27"
    
    //http://search.maven.org/#artifactdetails%7Cjavax.validation%7Cvalidation-api%7C1.1.0.Final%7Cjar
    libraryDependencies += "javax.validation" % "validation-api" % "1.1.0.Final"
    

    【讨论】:

      【解决方案2】:

      **我尝试了上面的 .sbt 文件,但它没有排除 jars 并且仍然给出相同的错误。

      所以修改了构建文件。下面的示例可以成功创建构建。**

      name := "KafkaSparkCouchReadWrite"
      
      organization := "my.clairvoyant"
      
      version := "1.0.0-SNAPSHOT"
      
      scalaVersion := "2.11.11"
      
      libraryDependencies ++= Seq(
        "org.apache.spark" %% "spark-core" % "2.1.0",
        "org.apache.spark" %% "spark-streaming" % "2.1.0",
        "org.apache.spark" %% "spark-sql" % "2.1.0",
        "com.couchbase.client" %% "spark-connector" % "2.1.0",
        "org.glassfish.hk2" % "hk2-utils" % "2.2.0-b27",
        "org.glassfish.hk2" % "hk2-locator" % "2.2.0-b27",
        "javax.validation" % "validation-api" % "1.1.0.Final"
      ).map(_.excludeAll(ExclusionRule("org.glassfish.hk2"),ExclusionRule("javax.validation"))) 
      

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 2014-12-18
        • 2014-01-12
        • 1970-01-01
        • 2015-10-27
        • 2018-07-17
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        相关资源
        最近更新 更多