首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在命令行或文本编辑器中在SBT下执行项目的Scala文件?

在命令行或文本编辑器中在SBT下执行项目的Scala文件?
EN

Stack Overflow用户
提问于 2017-09-03 20:56:12
回答 1查看 244关注 0票数 1

我正在学习Scala,它提供了这里文件。我下载它的objsets.zip 这里。然后我解压缩它,结束并输入它,然后输入sbt,然后输入console。我试图在命令行上加载文件src/main/scala/objsets/TweetSet.scala,但是我得到了很多错误。

代码语言:javascript
运行
复制
scala> :load src/main/scala/objsets/TweetSet.scala
Loading src/main/scala/objsets/TweetSet.scala...
<console>:1: error: illegal start of definition
package objsets
^
<console>:10: error: not found: value TweetReader
       import TweetReader._
              ^
import common._
defined class Tweet
<console>:2: error: illegal start of statement (no modifiers allowed here)
  override def toString: String =
  ^

本课程使用Eclipse,但我想学习如何将Vim用于Scala开发,这是我最喜欢的编辑器。我发现Eclipse很难使用。所以

如何在SBT下命令行的scala解释器中加载scala文件?在像Vim这样的文本编辑器上开发scala项目,而不必离开编辑器或命令行本身,是否存在一些有利的工具?

SBT文件和这个目录看起来像这个

代码语言:javascript
运行
复制
$ tree src/
src/
├── main
│   └── scala
│       ├── common
│       │   └── package.scala
│       └── objsets
│           ├── TweetData.scala
│           ├── TweetReader.scala
│           ├── TweetSet.scala
│           └── testing.sc
└── test
    └── scala
        └── objsets
            └── TweetSetSuite.scala

7 directories, 6 files
$ cat build.sbt assignment.sbt 
name := course.value + "-" + assignment.value

scalaVersion := "2.11.7"

scalacOptions ++= Seq("-deprecation")

// grading libraries
libraryDependencies += "junit" % "junit" % "4.10" % Test

// for funsets
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"

// include the common dir
commonSourcePackages += "common"

courseId := "bRPXgjY9EeW6RApRXdjJPw"

course := "progfun1"
assignment := "objsets"

assignmentInfo := AssignmentInfo(
  key = "6PTXvD99EeWAiCIAC7Pj9w",
  itemId = "d1FGp",
  premiumItemId = Some("Ogg05"),
  partId = "7hlkb",
  styleSheet = Some((_: File) / "scalastyle" / "scalastyle_config.xml")
)
EN

Stack Overflow用户

回答已采纳

发布于 2017-09-03 21:08:01

:load逐行将文件的内容复制到REPL中。这意味着您最终会试图定义包(在REPL中是不允许的),然后尝试导入不可见的东西,等等。如果您在一个文件上使用:load,其格式可以被REPL使用,那么它就会工作。在大多数情况下,这意味着将package行替换为import行。

无论如何,没有必要使用:loadsbt console将把您放在一个REPL中,该项目位于其类路径上。sbt consoleQuick将把您放在一个只有类路径上的依赖项的REPL中。

对于第二个问题,您应该使用sbt作为后台过程。在终端模拟器中,将有一个选项卡在文件上运行vim,而在另一个选项卡中,将有sbt。在带有sbt的选项卡中,您可以运行~compile,它每次在Vim中保存文件时都会重新编译代码。这复制了IDE在键入时显示编译器错误/警告的方式。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46027760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档