scala - 在 IntelliJ 上运行 Spray

标签 scala intellij-idea sbt spray intellij-14

我正在尝试在 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 时遇到了这两个问题。以下是一些提示:

  1. 确保您使用的是最新的 IDEA 14(至少版本 139.224,2014 年 11 月 4 日)
  2. 确保您使用的是最新的 Scala 插件 (1.1.3)
  3. 将所有位置的 Seq[sbt.Def.Setting[_]] 更改为 Seq[sbt.Setting[_]](它们是类型别名)
  4. 更新构建文件时,请从 SBT“外部项目”手动刷新 IntelliJ 项目。

第 4 步需要一些解释。

Scala 插件提供与 Play、Twirl、SBT 和 Scala 的兼容性,所有这些都在一个 bundle 中。它所做的事情之一是提供一个 SBT 工具(它可能显示在 IDEA 窗口的右侧)。打开后如下所示:

enter image description here

您可以单击左上角的刷新图标(圆形箭头),也可以右键单击任务名称(图中的 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/

相关文章:

scala - 当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,找不到 sbt 0.13.1 多项目模块

scala - 如何使用spark-submit运行具有多个主要方法的jar?

java - 为什么我在进行空值检查时仍会收到 IntelliJ 中可能存在 NPE 的警告?

python - 在 PyCharm 中让 6 和 6.moves 模块自动完成?

java - 如何使用随机唯一数字从大小(等于用户输入)填充数组?编译器

scala - 创建一个运行程序的新任务

scala - sbt package command : [error] Error parsing expression. 确保设置用空行分隔

Scala 并行无序迭代器

scala - 如何将字符串作为包含多个字符串的参数

java - 在 scala.swing 中添加 WindowStateListener