2

我正在尝试在 IntelliJ 14 上运行 Spray 示例。

一切正常,服务器启动并显示响应。

但是,我有 2 个主要问题(可能有 2 个问题相关):

1)由于某种原因,当我添加到我的 build.sbt 文件时:“io.spray”%%“spray-json”%“1.2.6”它什么也没做(我无法导入 spray.json)。

2) IntelliJ 在线显示错误:Revolver.settings。我相信这就是当我更改代码时它不会在浏览器刷新时更改的原因。intelliJ 显示的错误是:“表达式类型(Def.Settings 定义)必须符合 SBT 文件中的 Settings[_]”。

有谁知道如何解决这个问题?

我的 build.sbt 更改后:Revolver.settingsto: 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[_]]
4

1 回答 1

2

在使用 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 的兼容性。它所做的一件事是提供一个 SBT 工具(它可能显示在您的 IDEA 窗口的右侧)。打开后是这样的:

在此处输入图像描述

您可以单击左上角的刷新图标(圆形箭头)或右键单击任务名称(scrupal在图像中)并选择“刷新外部项目”。这些操作都执行相同的操作,即运行 SBT、更新项目以及从 SBT 设置和定义重新生成 IntelliJ 项目文件。

您可以通过其他几种方式实现这一点。您已经发现了一种方法:重新启动 IntelliJ IDEA。另一种方法是将 Scala 插件的 SBT 支持设置为“自动导入”。启用此功能后,它将重新导入 SBT 设置并在 SBT 源文件更改时更新您的 IDEA 项目。我通常将其关闭,因为在我修改文件时每隔几次击键后尝试重新导入(一个漫长的过程)很烦人。因此,我使用手动方法并告诉 IntelliJ 何时我希望它刷新。

要打开自动导入,请转到 IntelliJ Preferences,选择“Build, Execution, Deployment”,选择“Build Tools”,选择“SBT”,然后在右侧面板中选择您的项目并选中“Use auto-import”场地。- 重新启动 IntelliJ IDEA。你已经发现这行得通。- 将 Scala 插件设置为“自动导入”。

于 2014-11-30T15:48:46.333 回答