【问题标题】:Why I can't execute scala file?为什么我不能执行 scala 文件?
【发布时间】:2019-02-22 21:37:22
【问题描述】:

我是Scala的新手,第一次运行Scala,在安装Scala的时候,我创建了一个名为Hello.scala的文件,内容为:

println("HelloWorld!")

当我输入scala时,没有问题,显示了scala REPL,但是当我输入scala Hello.scala时,它提示:

<console>:1: error: ';' expected but '.' is found.

我不知道是什么问题,希望有人能帮助我。

【问题讨论】:

    标签: scala


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      要在 REPL 中执行外部脚本(从中加载所有定义),请使用 :load &lt;filepath&gt; 命令而不是 scala &lt;filepath&gt;

      » echo 'println("HelloWorld")' > Hello.scala
      » scala
      Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.6.0_24).
      Type in expressions to have them evaluated.
      Type :help for more information.
      
      // is this what you tried to do?
      scala> scala Hello.scala
      <console>:1: error: ';' expected but '.' found.
         scala Hello.scala
      
      // do this instead
      scala> :load Hello.scala
      Loading Hello.scala...
      HelloWorld
      
      scala>
      

      【讨论】:

        【解决方案3】:

        您的文件Hello.scala 是一个脚本。您应该可以在命令提示符下使用scala Hello.scala 运行它。

        $ scala Hello.scala 
        HelloWorld!
        

        另一方面,REPL 不适用于运行脚本。它用于直接运行scala代码:

        scala> println("HelloWorld!")
        "HelloWorld!"
        

        【讨论】:

          【解决方案4】:

          如果你在 scala REPL 中执行它。你应该使用如下

          :load [scala file path]
          

          输出如下

          定义的“对象名”

          然后调用main方法作为下一条命令

          objectname.main(Array())
          

          更多详细信息请参考以下网址

          https://www.scala-lang.org/documentation/getting-started.html

          【讨论】:

            【解决方案5】:

            只是我所知道的总结。我曾经对如何正确运行 scala 文件感到困惑。

            总的来说,我们有 3 种方法来实现这一点:

            1. 用于脚本文件。对于脚本,这意味着它就像你在 REPL 中键入语句行一样,或者使用:paste 模式粘贴多行。比如:

              println("foo")

            2. 使用scalac 编译包含 main 方法的对象。您可以extends App trait 轻松实现。

              def main(args: Array[String]) : 单位

            你可能会说“你这个骗子,只有两种方法”。但对于第二个,我认为有太多方法可以让它运行。

            1. scala -howtorun:object ObjectName -cp "./"-cp 仅用于保险。
            2. java -cp "/path/to/your/scala-jars" ObjectName :所以区别只是需要包含类路径。

            【讨论】:

              【解决方案6】:

              如果您使用某种 Unix,您可以将 Scala 脚本作为 shell 脚本运行 通过在文件顶部添加 pound bang 指令。

              例如,在名为helloarg 的文件中键入以下内容:

              #!/bin/sh
              exec scala "$0" "$@"
              !#
              // Say hello to the first argument
              println("Hello, "+ args(0) +"!")
              

              初始的#!/bin/sh 必须是文件的第一行。
              一旦你设置了它的执行权限:

              $ chmod +x helloarg
              

              您可以将 Scala 脚本作为 shell 脚本运行,只需说:

              $ ./helloarg globe
              

              如果你在 Windows 上,你可以通过命名 文件 helloarg.bat 并将其放在脚本的顶部:

              ::#!
              @echo off
              call scala % 0 % *
              goto :eof
              ::!#
              

              【讨论】:

              • 如何从 sbt 运行 scala 脚本?
              【解决方案7】:

              在main函数中写println语句:

              object HelloWorld {   
               def main(args: Array[String]) {   
                 println("Hello World!")   
               }   
              }
              

              然后执行:scala -nc HelloWorld.scala

              【讨论】:

                【解决方案8】:

                这适用于 mac 进行开发。

                #!/usr/bin/env scala -nc
                println("hello");
                

                【讨论】:

                  【解决方案9】:

                  当您尝试运行 scala 时,请按照以下步骤操作:

                  1. 不要打开 scala REPL
                  2. 在 cmd 提示符下使用 scala &lt;filename.scala&gt;&lt;Input if any&gt;

                  下面是例子:

                  scala /home/prakash/Desktop/babyname.scala &lt; /home/prakash/Desktop/ND

                  注意: 上述命令必须在 unix cmd 提示符中输入,而不是在 scala repl 中。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2015-06-30
                    • 1970-01-01
                    • 2010-10-08
                    • 2021-12-30
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多