Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 阻止SBT脱机运行的回写依赖项_Scala_Sbt_Ivy_Logback - Fatal编程技术网

Scala 阻止SBT脱机运行的回写依赖项

Scala 阻止SBT脱机运行的回写依赖项,scala,sbt,ivy,logback,Scala,Sbt,Ivy,Logback,这是对一个更接近问题的模型的改进 我正在尝试确认我可以脱机运行我的SBT项目。我可以,除非logback是我的库依赖项之一。为什么logback会引发问题?我做了一个简单的例子,只包含一个build.sbt和一个“hello world”应用程序 build.sbt有一系列随机依赖项来证明这一点: name := "testProject" version := "0.0.1" scalaVersion := "2.10.3" libraryDependencies ++= Seq(

这是对一个更接近问题的模型的改进

我正在尝试确认我可以脱机运行我的SBT项目。我可以,除非logback是我的库依赖项之一。为什么logback会引发问题?我做了一个简单的例子,只包含一个build.sbt和一个“hello world”应用程序

build.sbt有一系列随机依赖项来证明这一点:

name := "testProject"

version := "0.0.1"

scalaVersion := "2.10.3"

libraryDependencies ++= Seq(
    "org.apache.commons" % "commons-math3" % "3.2",
    "com.amazonaws" % "aws-java-sdk" % "1.4.0.1",
    "ch.qos.logback" % "logback-classic" % "1.1.1",
    "com.typesafe.akka" %% "akka-actor" % "2.3.1", 
    "com.typesafe.akka" %% "akka-remote" % "2.3.1",
    "org.scalaz" %% "scalaz-core" % "7.0.3"
)
我的脚步

  • 在我的项目中删除
    ~/.ivy2
    ~/.sbt
    目标/
    ,以确保
  • 确保已连接到internet,并运行
    sbt
    。我的hello world运行成功
  • 断开与internet的连接
  • sbt-clean
  • sbt运行
    。生成失败,作为未解析的依赖项进行了回登录
  • 删除logback依赖项并再次运行
    sbt
    。你好,世界跑步
  • 这是步骤5中的错误:

    [info] Resolving ch.qos.logback#logback-classic;1.1.1 ...
    [warn] Host repo1.maven.org not found. url=http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
    [info] You probably access the destination server through a proxy server that is not well configured.
    [warn]  module not found: ch.qos.logback#logback-classic;1.1.1
    [warn] ==== local: tried
    [warn]   /home/user/.ivy2/local/ch.qos.logback/logback-classic/1.1.1/ivys/ivy.xml
    [warn] ==== public: tried
    [warn]   http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
    [info] Resolving org.fusesource.jansi#jansi;1.4 ...
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
    [warn]  ::          UNRESOLVED DEPENDENCIES         ::
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
    [warn]  :: ch.qos.logback#logback-classic;1.1.1: not found
    [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
    sbt.ResolveException: unresolved dependency: ch.qos.logback#logback-classic;1.1.1: not found
    
    更新:

    使用SBT中的
    last
    命令,有大量用于依赖项解析的调试信息。以下是Akka成功解析的示例:

    [info] Resolving com.typesafe.akka#akka-actor_2.10;2.3.1 ...
    [debug] sbt-chain: Checking cache for: dependency: com.typesafe.akka#akka-actor_2.10;2.3.1 {compile=[default(compile)]}
    [debug] sbt-chain: module revision found in cache: com.typesafe.akka#akka-actor_2.10;2.3.1
    [debug]     local: revision in cache: com.typesafe.akka#akka-actor_2.10;2.3.1
    [debug]     found com.typesafe.akka#akka-actor_2.10;2.3.1 in sbt-chain
    [debug] == resolving dependencies testproject#testproject_2.10;0.0.1->com.typesafe.akka#akka-actor_2.10;2.3.1 [compile->runtime]
    [debug] == resolving dependencies testproject#testproject_2.10;0.0.1->com.typesafe.akka#akka-actor_2.10;2.3.1 [compile->compile]
    [debug] == resolving dependencies com.typesafe.akka#akka-actor_2.10;2.3.1->org.scala-lang#scala-library;2.10.3 [compile->master(*)]
    [debug] == resolving dependencies com.typesafe.akka#akka-actor_2.10;2.3.1->org.scala-lang#scala-library;2.10.3 [compile->compile(*)]
    [debug] == resolving dependencies com.typesafe.akka#akka-actor_2.10;2.3.1->com.typesafe#config;1.2.0 [compile->master(*)]
    
    以下是登录失败的原因:

    [info] Resolving ch.qos.logback#logback-classic;1.1.1 ...
    [debug] sbt-chain: Checking cache for: dependency: ch.qos.logback#logback-classic;1.1.1 {compile=[default(compile)]}
    [debug]         tried /home/user/.ivy2/local/ch.qos.logback/logback-classic/1.1.1/ivys/ivy.xml
    [debug]     local: no ivy file found for ch.qos.logback#logback-classic;1.1.1
    [debug]         tried http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
    [warn] Host repo1.maven.org not found. url=http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
    [info] You probably access the destination server through a proxy server that is not well configured.
    [debug]     public: no ivy file found for ch.qos.logback#logback-classic;1.1.1
    [warn]  module not found: ch.qos.logback#logback-classic;1.1.1
    [warn] ==== local: tried
    [warn]   /home/user/.ivy2/local/ch.qos.logback/logback-classic/1.1.1/ivys/ivy.xml
    [warn] ==== public: tried
    [warn]   http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
    
    我可以确认缓存中的以下文件(不是“~/.ivy/local”文件夹):


    它在你的本地常春藤缓存中找不到,修复它,你就解决了你的问题


    尝试清除你的常春藤缓存,可能它已损坏。

    当我尝试时,文件确实是从~/.ivy2/cache解析的。我没有~/.ivy2/local,因为我不在本地发布。您是否有可能有一个ivysettings.xml文件(在Linux上,请尝试
    locate ivysettings.xml
    )正在与resolutionCacheDir等文件发生冲突?这仍然是一个谜,为什么你只有一个罐子有问题


    更新:这似乎是SBT 0.13.1中的回归;它在0.13.0中起作用,正如OP自己发现的(见他的答案),它在0.13.2中被修复。

    SBT 0.13.2在这个问题出现3天后发布,似乎解决了这个问题。我不知道这是否是一个已知问题,但SBT 0.13.2列出的更改包括

    修复常春藤的.+依赖范围不正确的问题 翻译成maven


    我就是这么想的,所以我多次删除了整个“.ivy2”和“.sbt”文件夹,但在所有电脑上仍然遇到相同的问题。我不是常春藤专家,你能启用调试模式查看它在做什么吗?另外,如果你不是将此发布到sbt别名的人,您可能想插话并遵循它:我找不到ivysettings文件,但只是为了确保我构建了一个新的VM(CrunchBang),并且只复制了jdk、sbt、build.sbt和.scala应用程序文件。我得到了同样的结果。它仍然无法找到唯一的logback classic,并且不存在这样的“本地”目录。假设您在脱机时再次尝试运行之前进行了清理?是的,在断开连接后,在sbt运行之前,我没有进行sbt清理(这会删除目标目录,但不会触及~/.ivy2)。使用您提供的build.sbt(以及一个简单的scala程序,它只回显其参数),我觉得一切都很好。您使用的是sbt版本0.13.1吗?我使用的是0.13.0。看起来这是0.13.1的回归?
    ~/.ivy2/cache/ch.qos.logback/logback-classic$ ls
    ivy-1.1.1.xml  ivy-1.1.1.xml.original  ivydata-1.1.1.properties  jars