我正在尝试在 IntelliJ 14 上运行 Spray 示例。
一切看起来都正常,服务器启动并显示响应。
但是,我遇到了 2 个主要问题(可能 2 个问题是相关的):
1)出于某种原因,当我添加到我的 build.sbt 文件时: "io.spray"%% "spray-json"% "1.2.6"它没有执行任何操作(我无法导入 Spray.json) .
2) IntelliJ 在以下行显示错误:Revolver.settings。我相信这就是当我更改代码时它在浏览器刷新时不会更改的原因。 intelliJ 显示的错误是:“表达式类型(Def.Settings Definition)必须符合 SBT 文件中的 Settings[_]”。
有人知道如何解决这个问题吗?
我的build.sbt更改后:Revolver.settings
为:Revolver.settings: Seq[sbt.Def.Setting[_]]
:
organization := "com.example"
version := "0.1"
scalaVersion := "2.10.4"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
libraryDependencies ++= {
val akkaV = "2.3.6"
val sprayV = "1.3.2"
Seq(
"io.spray" %% "spray-json" % "1.2.6",
"io.spray" %% "spray-can" % sprayV,
"io.spray" %% "spray-routing" % sprayV,
"io.spray" %% "spray-testkit" % sprayV % "test",
"com.typesafe.akka" %% "akka-actor" % akkaV,
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test",
"org.specs2" %% "specs2-core" % "2.3.7" % "test"
)
}
Revolver.settings: Seq[sbt.Def.Setting[_]]
最佳答案
我在使用 IntelliJ 14 时遇到了这两个问题。以下是一些提示:
- 确保您使用的是最新的 IDEA 14(至少版本 139.224,2014 年 11 月 4 日)
- 确保您使用的是最新的 Scala 插件 (1.1.3)
- 将所有位置的
Seq[sbt.Def.Setting[_]]
更改为Seq[sbt.Setting[_]]
(它们是类型别名) - 更新构建文件时,请从 SBT“外部项目”手动刷新 IntelliJ 项目。
第 4 步需要一些解释。
Scala 插件提供与 Play、Twirl、SBT 和 Scala 的兼容性,所有这些都在一个 bundle 中。它所做的事情之一是提供一个 SBT 工具(它可能显示在 IDEA 窗口的右侧)。打开后如下所示:
您可以单击左上角的刷新图标(圆形箭头),也可以右键单击任务名称(图中的 scrupal
),然后选择“刷新外部项目”。这些操作都执行相同的操作,即运行 SBT、更新项目以及从 SBT 设置和定义重新生成 IntelliJ 项目文件。
您可以通过其他几种方式实现这一点。您已经发现了一种方法:重新启动 IntelliJ IDEA。另一种方法是将 Scala 插件的 SBT 支持设置为“自动导入”。启用此功能后,每当 SBT 源文件发生更改时,它将重新导入 SBT 设置并更新您的 IDEA 项目。我通常将其关闭,因为当我修改文件时,每隔几次击键后就尝试重新导入(一个漫长的过程),这很烦人。因此,我使用手动方法并告诉 IntelliJ 当我希望它刷新时。
要打开自动导入,请转到 IntelliJ 首选项,选择“构建、执行、部署”,选择“构建工具”,选择“SBT”,然后在右侧面板中选择您的项目并选中“使用自动导入” -导入”字段。 - 重新启动 IntelliJ IDEA。您已经发现这是有效的。 - 将 Scala 插件设置为“自动导入”。
关于scala - 在 IntelliJ 上运行 Spray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202743/