Scala sbt没有看到(并且没有加载)依赖

时间:2017-06-01 08:29:52

标签: scala sbt

我需要连接到mssql服务器。所以我在我的dependency文件中描述了build.sbt,如下所示:

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!")
}

和project / build.properties:

sbt.version=0.13.15

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

此代码已编译并运行正常。

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

我无法理解为什么两个几乎完全相同的项目表现不同。

我还清除了sbt文件中的两个文件夹,并且无论如何都得到了相同的结果。

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

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

“解决”我的问题是从我的项目中删除scala代码的整个结构并从头开始再次创建它。似乎sbt使用了一些与执行目录几乎无关的缓存。

1 个答案:

答案 0 :(得分:1)

我不知道为什么但是在我完全删除带有scala代码的目录dir并从头开始再次创建它之后问题就消失了。

似乎sbt与源代码位置之间存在硬连接。