为什么sbt〜compile命令在代码更改时不重新编译?

时间:2019-07-06 10:39:34

标签: scala sbt

我目前在用sbt更改代码时重新编译时遇到问题。

我一直在关注sbt参考'sbt by example' 我安装了sbt 1.2.8,并按照说明进行操作:

创建最小的sbt版本

JavascriptLanguage version : ECMA script 5.1
Platform  : intellij

var fetch = require('node-fetch');
function abc() {
    var response = fetch(url, {
            method: 'POST',

            body: {
                grant_type: "password",
                username: "user1",
                password: "Password123",
                client_id: "android",
                client_secret: "android-secret"
            },
             headers: {
            "Content-Type": "application/x-www-form-urlencoded",

        },
        }
    ).then(function (result) {
        console.log(result)

    }).catch(function (error){
});



    console.log(response);



}
abc();


 Actual Result :
     status: 401,
     statusText: 'Unauthorized',
     headers: Headers { [Symbol(map)]: [Object] },
     counter: 0 } }

Expected Result : should get 200

启动sbt shell

$ mkdir foo-build
$ cd foo-build
$ touch build.sbt

在代码更改时重新编译(请注意编译命令前的〜前缀)

$ sbt
[info] Loading global plugins from C:\Users\hce\.sbt\1.0\plugins
[info] Loading project definition from E:\learn\Scala\demo\foo-build\project
[info] Loading settings for project foo-build from build.sbt ...
[info] Set current project to foo-build (in build file:/E:/learn/Scala/demo/foo-build/)
[info] sbt server started at local:sbt-server-57c501e502d72a00d890

创建源文件

使先前的命令保持运行状态。从其他外壳或文件管理器中,在项目目录中创建以下嵌套目录:src / main / scala / example。然后,使用您喜欢的编辑器在示例目录中创建Hello.scala,如下所示:

sbt:foo-build> ~compile
[success] Total time: 0 s, completed Jul 6, 2019 12:01:24 PM
1. Waiting for source changes in project foo-build... (press enter to interrupt)

此新文件应由正在运行的命令拾取。但这在我的系统上不起作用。

预期行为:

package example

object Hello extends App {
  println("Hello")
}

以下是一些有关我的环境的信息

[info] Compiling 1 Scala source to /tmp/foo-build/target/scala-2.12/classes ...
[info] Done compiling.
[success] Total time: 2 s, completed May 6, 2018 3:53:42 PM
2. Waiting for source changes... (press enter to interrupt)

我已经尝试过的方法:

  • 重新安装sbt
  • 尝试使用Windows逗号行
  • 尝试mingw64 bash

要正确运行sbt〜compile命令,我缺少什么?

1 个答案:

答案 0 :(得分:0)

我找到了答案。

指令包含错误。 我们应该将src / main / scala / example目录放在项目目录中。

  

从其他外壳或文件管理器中,在项目目录中创建以下嵌套目录: src / main / scala / example。

但这会导致所描述的问题。 foo-build / project /用于构建定义代码。

如果我将src / main / scala / example目录放在foo-build目录中,则它可以正常工作。

我应该事先执行 run 命令,该命令会给出“未检测到主类”错误。通过阅读以下stackoverflow问题,有助于发现目录结构不正确:how to set main class in sbt project

我的错误。抱歉打扰您了。