Ihr Problem scheint dies zu sein : Ihre intermediären Scala-Dateien sind nicht korrekt codiert. Hier
ist der Prozess:
Wiedergabe nimmt Ihre Template-Datei (foo.scala.html
) und übersetzt diese in Scala: target/scala-2.10/src_managed/main/views/html/foo.template.scala
. Dies wird dann von sbt in .class-Dateien kompiliert und von play abgespielt.
Wenn sbt diese Zwischendateien erstellt, erstellt es sie mit der Standardcodierung (in meinem Fall eine Windows-Maschine, so UTF-8 ohne BOM - Ihr Computer kann sich unterscheiden). Wichtig ist, dass diese Kodierung erhalten bleibt. Selbst wenn ich die Kodierung der ursprünglichen Vorlagendatei (foo.scala.html in UTF-16) ändere, ist die Kodierung der .scala-Datei immer noch dieselbe (UTF-8 ohne BOM in meinem Fall). Die Datei wird jedoch nicht mehr kompiliert, da die Datei nicht gelesen werden kann, da der Scala-Compiler ITF-8 erwartet.
Die 'richtige' Lösung ist immer UTF-8 zu verwenden, und tatsächlich war dies die für Play 1.x empfohlene Lösung, siehe Play documentation Internationalization. Hier ist das Äquivalent für play 2. Sie können auch normale Internationalisierungs-Nachrichtendateien verwenden.
Also, wenn Sie
JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' sbt
angeben, wie Bjorn vorgeschlagen, dann wird dieser SBT sagen, dass alle Dateien, die es liest und schreibt in UTF8 sein. Sie können auch die Dateicodierung für den Scala-Compiler in Ihrem Build angeben.scala:
val main = play.Project(appName, appVersion, appDependencies).settings(
scalacOptions ++= Seq("-encoding", "UTF-8")
// Add your own project settings here
)
Dies teilt dem scala-Compiler, der alle Dateien, die es liest (das heißt die foo.template.scala) in UTF-8 codiert sind. Wenn Sie dies auf Ihre Standardcodierung einstellen, funktioniert dies möglicherweise ebenfalls.
Ihre beste Wette ist es, eine sbt-Reinigung durchzuführen, um sicherzustellen, dass die problematischen Dateien verschwunden sind, und wie oben vorgeschlagen mit JAVA_TOOL_OPTION neu zu starten. Sie müssen jedoch sicherstellen, dass all Ihre Builds dies berücksichtigen (Jenkins, andere Entwickler usw.).
geöffnet zweiten Kopfgeld, jetzt 300. – MyTitle