相关疑难解决方法(0)

在2.10中替代Scala REPL breakIf

我在这里阅读有关breakIf在REPL代码中使用该方法进行交互式调试的信息,但后来我发现这篇帖子break并在Scala 2.10 breakIf中删除了ILoop.不幸的是,该帖子并未解释为何删除了代码.

我假设删除了这些函数,因为有更好的方法可以做到这一点.如果是这样的话,有人可以赐教我吗?

scala scala-2.10

35
推荐指数
1
解决办法
1161
查看次数

将clojure/scala repl附加到正在运行的JVM

我有一个在Sun java 6 JVM中在tomcat下运行的java Web应用程序.有没有办法将scala或clojure REPL附加到正在运行的JVM?

一旦webapp启动并运行,就会在正在运行的VM中设置要进行调用的上下文.因此,这对于调用增量,探索性开发和调试的任意java方法调用非常有用.

java jvm scala clojure read-eval-print-loop

26
推荐指数
3
解决办法
4223
查看次数

操作方法:在IDE外部调试Scala代码

我正在尝试使用jEdit作为编写Scala代码的主编辑器.

沿着jEdit,我正在使用Apache Buildr和DTerm.这一切都运行良好,除了我真的不确定如何在大型IDE之外调试Scala应用程序?

是否有推荐的实践/工具用于在IDE之外进行调试?

debugging workflow scala

23
推荐指数
2
解决办法
1万
查看次数

如何在Java应用程序中嵌入Scala 2.8解释器?

我希望能够以交互方式在我的Java应用程序中操作内存中的对象以进行调试.我非常希望使用Scala的2.8解释器,利用tab-completion等功能.我该怎么做呢?

scala

16
推荐指数
1
解决办法
3924
查看次数

如何编写允许放入解释器的Scala 2.9代码

我不知道如何编写允许将解释器放入Scala 2.9代码的代码.这个问题是一个后续这一块,这要求斯卡拉相当于什么,

import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

来自Python.那里给出的建议主要是针对Scala 2.8,相关的包不再存在于以前的形式中.也就是说,

  1. scala.nsc.tools.nsc.Interpreter.{break, breakIf} 已被转移到 scala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
  2. DebugParam现在NamedParam在scala.tools.nsc.interpreter中

正如原始帖子中所述,父进程的类路径不会自动传递给新的解释器,因此这里提供一种解决方法.不幸的是,那里调用的许多类/方法现在已经改变了,我不太确定如何修改代码表现为"预期".

谢谢!

编辑:这是我的测试代码,在当前编译和运行,但尝试在调试器中执行任何操作导致应用程序冻结,如果编译scalac和执行scala

import scala.tools.nsc.interpreter.ILoop._

object Main extends App {

  case class C(a: Int, b: Double, c: String) {
    def throwAFit(): Unit = {
      println("But I don't wanna!!!")
    }
  }

  // main
  override def main(args: Array[String]): Unit = {

    val c = C(1, 2.0, "davis")

    0.until(10).foreach {
      i => 
        println("i = " + i)
        breakIf(i …
Run Code Online (Sandbox Code Playgroud)

debugging interpreter scala

14
推荐指数
1
解决办法
997
查看次数

清洁解决方案,用于在程序执行过程中放入REPL控制台

有什么工作解决方案可以放入REPL控制台与Scala 2.10?

这主要用于调试目的 - 我想在执行过程中暂停,并且有一个REPL控制台,我可以在当前执行状态下使用程序中的复杂表达式检查值并测试程序的逻辑.那些使用Ruby编程的人可能知道类似的功能:binding.pry.

AFAIK,Scala 2.9及以下曾经有过,breakIf但它已从更高版本中删除.使用ILoop似乎是新的方式,但由于sbt没有将scala-library添加到类路径而引入了问题.

这样这样的几个解决方案似乎提供了一个很好的解决方法,但我的观点是必须有一个解决方案,我不必花费数小时甚至数天来使REPL工作.

简而言之,涉及更多的样板步骤 - 与此相反,binding.pry这只是一行代码,没有额外的样板.

我不知道在执行程序作为sbt任务时是否存在问题,而不是直接运行程序可执行文件,但出于开发目的,我正在运行并使用sbt任务测试我的程序.

scala sbt scala-2.10

11
推荐指数
1
解决办法
931
查看次数

以编程方式启动Scala REPL?

我想从命令行启动Scala Swing应用程序,然后在应用程序启动后,放入Scala REPL以用作控制接口.

理想情况下,我还想预先绑定一些变量名称.更好的是为REPL使用Java2D终端仿真器,但我找不到合适的东西.

Scala REPL是否有公共API?

scala read-eval-print-loop

10
推荐指数
1
解决办法
3740
查看次数

是否有以编程方式运行Scala REPL的API?

基于一个线程Scala解释器来源,它看起来并不难以获得相同的

def runLine(line: String): String
Run Code Online (Sandbox Code Playgroud)

但有人写过这个吗?

api scala read-eval-print-loop

7
推荐指数
1
解决办法
1602
查看次数

在Spark脚本中插入Scala解释器?

我正在使用Scala 2.11.8和Spark 2.1.0.我对Scala完全不熟悉.

是否有一种简单的方法来添加单行断点,类似于Python:

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

我将被放入Scala shell中,我可以检查脚本中执行行的内容是什么?(我也很满意脚本的结尾......)

我目前正在开始我的脚本:

$SPARK_HOME/bin/spark-submit --class "MyClassName" --master local target/scala-2.11/my-class-name_2.11-1.0.jar
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?将极大地帮助调试.

编辑:这个其他SO帖子的解决方案不是很有帮助/需要很多样板+不起作用.

debugging interpreter scala

7
推荐指数
1
解决办法
361
查看次数