【问题标题】:java.io.IOException: Cannot run program "scala": CreateProcess error=2,java.io.IOException:无法运行程序“scala”:CreateProcess 错误=2,
【发布时间】:2017-05-16 06:13:42
【问题描述】:

我想编译这个:

import scala.sys.process._

val output = "scala".!!

但是给我看这个:

java.io.IOException: Cannot run program "scala": CreateProcess error=2, 系统找不到指定的文件

这也不起作用:

val cmd = "\"C:\\Program Files (x86)\\scala\\bin\\scalac.bat\\\""

val output = "cmd".!!

我的环境变量也很好。 (对于 java:C:\Program Files\Java\jdk1.8.0_111\ 和 scala:C:\Program Files (x86)\scala 和路径变量:%JAVA_HOME%\bin 和 %SCALA_HOME%\bin

在 cmd 工作中键入“scala”。 这段代码也可以工作:

import scala.sys.process._

val output = "java".!!

Windows 10

【问题讨论】:

    标签: java windows scala


    【解决方案1】:

    command scala 是一个带有交互式控制台的 REPL。您正在尝试从交互式控制台运行交互式命令?

    它应该可以与ls -l(DIR in dindows) 或date 等任何非交互式命令一起使用,如以下示例(在 unix 中),

    scala> val output = "date".!!
    output: String =
    "Mon May 15 14:52:54 PDT 2017
    "
    

    scala> val output = "java -version".!!
    java version "1.8.0_111"
    Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
    output: String = ""
    

    或者,

    scala> Seq("echo", "urayagppd") #>> new File("mylogs.log")
    res2: scala.sys.process.ProcessBuilder =  ( [echo, urayagppd] #| /Users/prayagupd/myrepo/mylogs.log )
    

    但是要运行一些交互式进程,比如 ssh 或其他东西,

    scala> val scalaProcess = Process("""scala""")
    scalaProcess: scala.sys.process.ProcessBuilder = [scala]
    
    scala> val exitCode = scalaProcess.!
    Welcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111).
    Type in expressions for evaluation. Or try :help.
    
    scala> :quit
    exitCode: Int = 1
    
    scala> val p = scalaProcess.run
    p: scala.sys.process.Process = scala.sys.process.ProcessImpl$SimpleProcess@af9dd34
    
    scala> Welcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111).
    Type in expressions for evaluation. Or try :help.
    
    scala> :quit
    
    scala> val exitCode = p.exitValue
    exitCode: Int = 1
    

    【讨论】:

    • 当我输入 val scalaProcess = Process("""scala -version""") 但是当我输入 val scalaProcess = Process("""java -version""" 时它仍然不起作用) 然后运行良好。
    • 当我输入 val scalaProcess = Process("""scala -version""") 但是当我输入 val scalaProcess = Process("""java -version""") 然后工作得很好。
    • 错误是什么? Process("""scala -version""").! 工作正常。
    • 错误是一样的。 java.io.IOException:无法运行程序“scala”:CreateProcess error=2,系统找不到指定的文件。 ;(
    • 终于成功了。 scala.bat -versionscala.bat 以及 .bat 的所有内容 :) 非常感谢 @prayagupd。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多