Scala Play 2.0.编译错误:解码时出现IO错误
我从
GitHub(
https://github.com/henrikengstrom/roygbiv)下载了多模块Scala项目,其中一个模块是Play 2.0模块.所以我可以使用SBT的运行命令在每个模块上运行整个应用程序,一切正常.但是当我添加到Play 2.0模板(index.scala.html)非英文字符并在浏览器中按F5时,我得到编译错误:
播放2.0模块我也使用SBT的运行命令,不使用播放控制台. 我检查了源文件编码 – 它是UTF-8.也尝试UTF-8没有BOM. 哪里可以问题? 解决方法
你的问题似乎是这样的:你的中间scala文件编码不正确.
这是过程: 播放需要您的模板文件(foo.scala.html)并将其转换为Scala:target / scala-2.10 / src_managed / main / views / html / foo.template.scala.然后,它被sbt编译为.class文件并通过播放运行. 当sbt创建这些中间文件时,它会使用默认编码创建它们(在我的情况下是Windows机器,因此UTF-8没有BOM – 您的机器可能不同).重要的是,这种编码方式依然存在,所以即使我将原始模板文件(foo.scala.html)的编码更改为UTF-16,而.scala文件的编码仍然是一样的(UTF-8没有BOM在我的案件).但是,该文件不再编译,因为该文件无法读取,因为scala编译器期待ITF-8. “正确”的解决方案是始终使用UTF-8,实际上这是推荐播放1.x的解决方案见Play documentation Internationalization.这里相当于play 2.您还可以使用普通的国际化消息文件. 所以,如果你指定 JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' sbt 如Bjorn所示,那么这将告诉sbt它读取和写入的所有文件将在UTF8中.您也可以在Build.scala中指定scala编译器的文件编码: val main = play.Project(appName,appVersion,appDependencies).settings( scalacOptions ++= Seq("-encoding","UTF-8") // Add your own project settings here ) 这告诉scala编译器,它读取的所有文件(即foo.template.scala)都以UTF-8编码.如果将其设置为默认编码,这可能也是有效的. 你最好的办法是做一个sbt清洁,确保违规文件消失,并重新启动与JAVA_TOOL_OPTION如上所述.但是,您必须确保所有的构建都考虑到这一点(jenkins,其他开发者等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |