我曾认为Try捕获跨线程异常,如下所示。我想没有:那么我如何在生成的子线程中捕获异常呢?
// Simple class that throws error
class Child extends Runnable {
def run {
val exception: Exception = new Exception("Foo")
val i = 1
Thread.sleep(1000)
val lines = scala.io.Source.fromFile("/tmp/filefoobar.txt").mkString
假设我需要从Scala运行一个命令:
program -i inputFile
我可以调用它并在Scala中的一个文件中捕获输出,使用:
val command = Seq("program", "-i", "inputFile")
val status = (command #> new File("capturedOutput")).!
但是我也需要设置环境和当前的工作目录。这样做是可行的:
val env = "KEY" -> "value"
val dir = new File(
为什么它在屏幕上抛出错误而不是在stderr中捕获?
scala> val stderr = new StringBuilder
stderr: StringBuilder =
scala> val stdout = new StringBuilder
stdout: StringBuilder =
scala> val k = Seq("ls /sdds") ! ProcessLogger(stdout append _, stderr append _)
java.io.IOException: Cannot run program "ls /
我正在尝试将Java库的控制台输出重定向到应用程序中的JTextArea。正在讨论的库是JPL,它是Java和SWI-Prolog之间的桥梁(尽管我怀疑这在概念上有多大的相关性)。
下面是我的代码:
PrintStream out = new PrintStream(new MyOutputStream(), true, "UTF-8");
System.setOut(out);
System.setErr(out);
System.out.println("This text is successful
我不清楚从基于scala的脚本执行unix命令的最佳实践。
这里有一个典型的scala脚本
#!/bin/sh
exec scala "$0" "$0" "$@"
!#
println("args length is ", args.length)
### want to list all files in the underlying folder
val resultSet = "ls -la"????
我检查了许多帖子,但是没有什么能清楚地勾勒出一个工作脚本,它可以从scala脚本执行unix命令并执行一
我是这个Scala世界的新手,我正在尝试一本书中的一些练习。所以,我有一个例子,用顺序和并行的方式打印一个向量。前者工作完美,后者挂起控制台。
码
val v = Vector.range(0, 10)
v.foreach(println)
码输出
0123456789
但是,如果我使用相同的代码,但不是使用foearch,而是使用par,它会冻结控制台。
val v = Vector.range(0,10)
v.par.foreach(println)
我正在使用的书中说,输出应该类似于:
5678901234
但是它挂起了,程序永远也没有完成。
有人能解释一下为什么吗?
谁能告诉我"Fragment evaluation error“是什么意思,或者我可以在哪里寻找解决方案?我有时(但不总是)会得到很多这样的错误(不改变我的代码):
[error] ! Fragment evaluation error
[error] ThrowableException: Could not initialize class code.model.Post$ (FutureTask.java:138)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply$mcZ$sp(PostSpec.
我需要从Scala设置环境变量(PATH)。
我试过这个:
val cmd = Seq("export", "PATH='bla'")
cmd.lines
但是我得到了一个错误:
java.io.IOException: Cannot run program "export": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at scala.sys.process.ProcessBuild
在使用rdd.pipe(command)时,子进程的错误不会返回到主进程。例如,如果有人这样做:
sc.parallelize(Range(0, 10)).pipe("ls fileThatDontExist").collect
然后,堆栈跟踪如下:
java.lang.Exception: Subprocess exited with status 1
at org.apache.spark.rdd.PipedRDD$$anon$1.hasNext(PipedRDD.scala:161)
at scala.collection.Iterator$class.f
下面是一个简单的scala脚本:
object test {
def hi() { print("hi there from here") }
}
test.hi()
在命令行中,它执行预期的操作:
scala /shared/scaladem/src/main/scala/test.scala
Loading /shared/scaladem/src/main/scala/test.scala...
defined module test
hi there from here
Welcome to Scala version 2.10.2 (Java HotSpot(
我不知道它是Scala还是Play!有个问题。我想从我的Play应用程序中执行一些外部命令,从命令中获取输出,并根据命令输出向用户显示一个报告。有人能帮忙吗?
例如,当我从shell输入我的-命令时,它显示的输出如下所示,我想在web中捕获和显示:
Id Name IP
====================
1 A x.y.z.a
2 B p.q.r.s
请不要担心输出的格式和解析。在功能上,我看起来有点像PHP。我知道java Runtime.getRuntime().exec("command"),但是有任何Scala/Pl
我试图使用Scala访问XML文档中的特定信息。
我举了个例子向你展示我的问题。
我创建了这个XML“文档”,它的类是scala.xml.Elem:
val testxml = <Object><Identity Type="Has a Type"/><Reality>"true"</Reality></Object>
我想使用这个匹配表达式来访问"Identity“属性:
testxml match{
case <Reality>{value}</Reality>
运行5-6小时后,我从火花驱动程序中得到以下错误.我正在使用Ubuntu16.04LTS和open-jdk-8。
Exception in thread "ForkJoinPool-50-worker-11" Exception in thread "dag-scheduler-event-loop" Exception in thread "ForkJoinPool-50-worker-13" java.lang.OutOfMemoryError: unable to create new native thread
at java.l