【问题标题】:Scala sbt does not see (and does not load) dependencyScala sbt 没有看到(也没有加载)依赖
【发布时间】:2017-06-01 19:40:07
【问题描述】:

我需要连接到mssql 服务器。所以我在我的build.sbt 文件中这样描述dependency

libraryDependencies += "com.microsoft.sqlserver" % "mssql-jdbc" % "6.1.0.jre8"

然后我开始sbt。然后我运行'run' 命令并得到一个错误

object microsoft is not a member of package com
import com.microsoft.sqlserver

这是完整的应用程序对象:

import com.microsoft.sqlserver

object PC extends App {
  println("Hello there") // yes, I do nothing with microsoft.sqlserver package 
}

这是project/build.properties的内容:

sbt.version=0.13.15

在此之后,我用谷歌搜索,一无所获,然后进入 /tmp/ 目录以模拟我在工作目录中尝试做的事情。 我创建了build.sbt

name := "Hello sbt"

version := "2017-05-31"

scalaVersion := "2.9.2"

libraryDependencies += "com.microsoft.sqlserver" % "mssql-jdbc" % "6.1.0.jre8"

和简单的应用程序:

import com.microsoft.sqlserver

object HW extends App {
  println("Hello there!")
}

和项目/build.properties:

sbt.version=0.13.15

如您所见,它与我之前的代码几乎相同 - 只是对象名和文件名不同。

此代码已编译并运行良好。

我在target/streams/compile/dependencyClasspath/$global/streams/export 中找到了com.microsoft.sqlserver jar 文件路径:它指向我的主目录中的.ivy2 目录:/home/alex/.ivy2/cache/com.microsoft.sqlserver/mssql-jdbc/jars/mssql-jdbc-6.1.0.jre8.jar。 (所以它已经被加载了。)

我不明白为什么两个几乎完全相同的项目表现不同。

我还从sbt 文件中清除了这两个文件夹并得到了相同的结果。

我做错了什么?我错过了什么?有什么想法吗?

附:两个目录中的show sources 显示不同的位置。我从home 目录中删除了.sbt 目录,然后再次运行sbt。 查看project/target/streams/compile/dependencyClasspath/$global/streams/exporttarget/streams/compile/dependencyClasspath/$global/streams/export 显示了不同的结果。出于某种原因run sbt 没有查看~/.ivy2/ 目录。

“解决”我的问题是从我的项目中删除整个 scala 代码结构,然后从头开始重新创建它。似乎sbt 使用了一些与执行它的目录几乎没有关系的缓存。

【问题讨论】:

  • show sourcesshow managedClasspath 输出什么?在任何一种情况下。
  • fail*( 目录中显示:Attributed(/home/alex/.sbt/boot/scala-2.10.6/lib/scala-library.jar) 和 *ok dir: 属性(/home/alex/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.9.2.jar) 属性(/home/alex/.ivy2/cache /com.microsoft.sqlserver/mssql-jdbc/jars/mssql-jdbc-6.1.0.jre8.jar) [等等] 他们指向不同的地方。为什么会这样?
  • 不同的 sbt 版本?另外,添加scalaVersion := "2.12.2"。显然它没有拾取你的依赖。
  • Also, add scalaVersion := "2.12.2" - 这有什么帮助?
  • 给你一个合理的 scala 版本来使用 ;-)

标签: scala sbt


【解决方案1】:

我不知道为什么,但是在我使用 scala 代码完全删除目录 dir 并从头开始重新创建它之后,问题就消失了。

似乎 sbt 和源代码位置之间存在硬联系。

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 2013-06-02
    • 1970-01-01
    • 2014-12-27
    • 2014-06-30
    • 2017-10-05
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多