我需要连接到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/export
和target/streams/compile/dependencyClasspath/$global/streams/export
显示了不同的结果。出于某种原因,run
sbt不会查看~/.ivy2/
dir。
“解决”我的问题是从我的项目中删除scala代码的整个结构并从头开始再次创建它。似乎sbt
使用了一些与执行目录几乎无关的缓存。
答案 0 :(得分:1)
我不知道为什么但是在我完全删除带有scala代码的目录dir并从头开始再次创建它之后问题就消失了。
似乎sbt与源代码位置之间存在硬连接。