【问题标题】:Why can't scala find what sbt can?为什么scala找不到sbt可以?
【发布时间】:2017-06-14 10:46:48
【问题描述】:

使用 sbt 一切都很好:

» sbt console
[info] Loading project definition from /repos/myrepo/project
[info] Set current project to bpavscan (in build file:/repos/myrepo/)
[info] Starting scala interpreter...
[info] 
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.

scala> import play.api.libs.json._
import play.api.libs.json._

scala> 

但如果我用 scala 工具来做:

» scala
Welcome to Scala version 2.11.6 (OpenJDK 64-Bit Server VM, Java 1.8.0_131).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import play.api.libs.json._
<console>:7: error: not found: value play
       import play.api.libs.json._
              ^

scala>

我需要运行一个简单的脚本,我通常会这样做:

scala myscript.scala

但是由于现在我的脚本有播放依赖,我不能再用 scala 运行它,因为 scala 找不到播放。

我需要:

  1. 能够使用简单的 scala 工具加载播放框架
  2. 能够使用sbt 运行一个简单的脚本:sbt run 运行我的项目,这是我不想要的。我想运行一个简单的脚本(尝试一些简单的事情)

【问题讨论】:

  • 因为 Scala REPL 不知道您的依赖项是什么,而 SBT 负责管理您的所有项目依赖项。
  • @YuvalItzchakov 如何使用已安装的依赖项运行一个简单的脚本?有sbt runscript &lt;myscript.scala&gt;吗?

标签: scala playframework sbt


【解决方案1】:

sbt console 加载与scala 相同的console/REPL,但在build.sbt 中定义了额外的加载依赖项。所以在加载控制台之前,所有的依赖库都被添加了。这就是您在使用sbt console 时可以使用import play 库的原因。

另一方面,scala 使用系统 scala-package 内的库启动 console。因此需要将额外的jars 包含在importing 的包中。对于上述情况,如果播放库 jar 包含在 scala 目录中,那么 import play.api.libs.json._ 也应该适用于 scala console

【讨论】:

    猜你喜欢
    • 2019-06-06
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2013-08-05
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多