当 Scala 文件有中文字符作为注释时,如何设置 Scala 编译器



>我用中文注释 Rational.scala 文件的代码行,如下所示:

var a = new Rational(-4,6)
var b = new Rational(3,-9)
var c = a + a * b //满足运算符的优先级别 

当我运行命令时:

scala Rational.scala

它会引发异常。 而我关闭评论或用英语评论,没关系!

我有点配置?

非常感谢

仅供参考:这是例外:

java.lang.ClassNotFoundException: Main (args = , classpath = d:DOCUME~1LUJUNM~1LOCALS~1Tempscalascript3969467400078546162.tmp;C:Program%20Files
Javajdk1.6.0_20jrelibresources.jar;C:Program%20FilesJavajdk1.6.0_20jrelibrt.jar;C:Program%20FilesJavajdk1.6.0_20jrelibjsse.jar;C:Prog
ram%20FilesJavajdk1.6.0_20jrelibjce.jar;C:Program%20FilesJavajdk1.6.0_20jrelibcharsets.jar;C:Program%20FilesJavajdk1.6.0_20jrelibext
dnsns.jar;C:Program%20FilesJavajdk1.6.0_20jrelibextlocaledata.jar;C:Program%20FilesJavajdk1.6.0_20jrelibextsunjce_provider.jar;C:Progra
m%20FilesJavajdk1.6.0_20jrelibextsunmscapi.jar;C:Program%20FilesJavajdk1.6.0_20jrelibextsunpkcs11.jar;C:SCALA-~1.FINbin..libjline.ja
r;C:SCALA-~1.FINbin..libscala-compiler.jar;C:SCALA-~1.FINbin..libscala-dbc.jar;C:SCALA-~1.FINbin..libscala-library.jar;C:SCALA-~1.FIN
bin..libscala-swing.jar;C:SCALA-~1.FINbin..libscalap.jar;C:Program%20FilesJavajdk1.6.0_20bin;C:Program%20FilesJavajdk1.6.0_20lib)
        at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:103)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:33)
        at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:40)
        at scala.tools.nsc.ScriptRunner.scala$tools$nsc$ScriptRunner$$runCompiled(ScriptRunner.scala:171)
        at scala.tools.nsc.ScriptRunner$$anonfun$runScript$1.apply(ScriptRunner.scala:188)
        at scala.tools.nsc.ScriptRunner$$anonfun$runScript$1.apply(ScriptRunner.scala:188)
        at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply$mcZ$sp(ScriptRunner.scala:157)
        at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:131)
        at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:131)
        at scala.tools.nsc.util.package$.waitingForThreads(package.scala:26)
        at scala.tools.nsc.ScriptRunner.withCompiledScript(ScriptRunner.scala:130)
        at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:188)
        at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:201)
        at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:58)
        at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

您的问题是您使用的是Windows,并且Windows的默认字符集不是UTF-8。

这样做:

  1. 确保您知道写入源文件的字符集是什么。最好是 UTF-8。

  2. 使用参数 -encoding 指定要使用的字符集。例如,scalac -enconding utf8 Rational.scala .

最新更新