首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行Scala 3 `.scala`脚本?

如何运行Scala 3 `.scala`脚本?
EN

Stack Overflow用户
提问于 2022-10-13 11:27:40
回答 1查看 73关注 0票数 0

如何在解释模式下运行*.scala脚本?例如,我有simple.scala

代码语言:javascript
复制
// simple.scala
println("a simple program")

如果使用scala simple.scala,我有

代码语言:javascript
复制
error: Compile server encountered fatal condition: javax/tools/DiagnosticListener
java.lang.ClassNotFoundException: javax.tools.DiagnosticListener
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:433)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:586)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
        at scala.tools.util.PathResolverBase$Calculated$.javaBootClasspath(PathResolver.scala:277)
        at scala.tools.util.PathResolverBase$Calculated$.basis(PathResolver.scala:283)
        at scala.tools.util.PathResolverBase$Calculated$.containers$lzycompute(PathResolver.scala:293)
        at scala.tools.util.PathResolverBase$Calculated$.containers(PathResolver.scala:293)
        at scala.tools.util.PathResolverBase.containers(PathResolver.scala:309)
        at scala.tools.util.PathResolver.computeResult(PathResolver.scala:341)
        at scala.tools.util.PathResolver.computeResult(PathResolver.scala:332)
        at scala.tools.util.PathResolverBase.result(PathResolver.scala:314)
        at scala.tools.nsc.backend.JavaPlatform$class.classPath(JavaPlatform.scala:28)
        at scala.tools.nsc.Global$GlobalPlatform.classPath(Global.scala:115)
        at scala.tools.nsc.Global.scala$tools$nsc$Global$$recursiveClassPath(Global.scala:131)
        at scala.tools.nsc.Global$GlobalMirror.rootLoader(Global.scala:64)
        at scala.reflect.internal.Mirrors$Roots$RootClass.<init>(Mirrors.scala:307)
        at scala.reflect.internal.Mirrors$Roots.RootClass$lzycompute(Mirrors.scala:321)
        at scala.reflect.internal.Mirrors$Roots.RootClass(Mirrors.scala:321)
        at scala.reflect.internal.Mirrors$Roots$EmptyPackageClass.<init>(Mirrors.scala:330)
        at scala.reflect.internal.Mirrors$Roots.EmptyPackageClass$lzycompute(Mirrors.scala:336)
        at scala.reflect.internal.Mirrors$Roots.EmptyPackageClass(Mirrors.scala:336)
        at scala.reflect.internal.Mirrors$Roots.EmptyPackageClass(Mirrors.scala:276)
        at scala.reflect.internal.Mirrors$RootsBase.init(Mirrors.scala:250)
        at scala.tools.nsc.Global.rootMirror$lzycompute(Global.scala:73)
        at scala.tools.nsc.Global.rootMirror(Global.scala:71)
        at scala.tools.nsc.Global.rootMirror(Global.scala:39)
        at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:257)
        at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:257)
        at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1390)
        at scala.tools.nsc.Global$Run.<init>(Global.scala:1242)
        at scala.tools.nsc.StandardCompileServer.session(CompileServer.scala:151)
        at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
        at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
        at scala.Console$.withOut(Console.scala:65)
        at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:74)
        at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:69)
        at scala.tools.nsc.io.Socket.applyReaderAndWriter(Socket.scala:49)
        at scala.tools.util.SocketServer.doSession(SocketServer.scala:69)
        at scala.tools.util.SocketServer.loop$1(SocketServer.scala:85)
        at scala.tools.util.SocketServer.run(SocketServer.scala:97)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply$mcZ$sp(CompileServer.scala:218)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
        at scala.Console$.withOut(Console.scala:53)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply$mcZ$sp(CompileServer.scala:213)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
        at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
        at scala.Console$.withErr(Console.scala:80)

但是我可以通过命令scala打开解释器,然后> println("a simple program")正确地工作。另外,如果我通过.scala编译一个更完整的scalac (包含一个主函数的对象),然后由scala运行它,事情就会进展顺利。

我想知道能否在解释器中运行.scala脚本。有什么不对劲吗?

更新:在我将scala从2.11更新到3.20之后,没有javax.tools.DiagnosticListener异常。但是,当我运行scala -explain simple.scala时,错误是:

代码语言:javascript
复制
-- [E103] Syntax Error: ~/simple.scala:2:0
2 |println("a simple program")
  |^^^^^^^
  |Illegal start of toplevel definition
  |-----------------------------------------------------------------------------
  | Explanation (enabled by `-explain`)
  |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  | A statement is an import or export, a definition or an expression.
  | Some statements are only allowed in certain contexts
   -----------------------------------------------------------------------------
1 error found
Error: Errors encountered during compilation

JAVA版本: openjdk 16.0.1 2021-04-20

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 20:04:17

正如Seth Tisue提到的,以下作品:

代码语言:javascript
复制
def main(args: Array[String]): Unit =
    // simple.scala
    println("a simple program")

如果您像这样调用它:

scala3 ~/simple.scala

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74054995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档