我在编译通过GIT加载的Java依赖项时遇到问题:
object ApplicationBuild extends Build {
lazy val project = Project("root", file(".")).dependsOn(RootProject(riakJavaClient))
lazy val riakJavaClient = uri("git://github.com/basho/riak-java-client")
}
我从sbt compile
收到的错误是:
[info] Compiling 134 Java sources to /Users/lawrencewagerfield/.sbt/0.13/staging/da0e66c4764a467c8977/riak-java-client/target/scala-2.10/classes...
[error] /Users/lawrencewagerfield/.sbt/0.13/staging/da0e66c4764a467c8977/riak-java-client/src/main/java/com/basho/riak/client/cap/Quorum.java:22: error: unmappable character for encoding ASCII
[error] * Riak 0.12 introduced ???symbolic??? consistency options for R and W
SBT似乎正在执行javac
,其编码与此依赖项中的源文件不兼容。
我已尝试将以下内容添加到build.sbt
,但它没有效果(错误相同):
javacOptions ++= Seq("-encoding", "UTF-16") // Note: I have tried with UTF-8 too
上述内容仅适用于我项目中的源文件吗?知道如何通过这个问题吗?
TL; DR 如何使用正确的编码编译Java依赖项?
答案 0 :(得分:10)
您是正确的,该设置仅适用于项目中的源文件。如果未指定范围的项目部分(这是典型的),则默认为封闭项目。要将设置应用于其他项目,请将其范围限定为该项目。例如,
javacOptions in riakJavaClient ++= Seq("-encoding", "UTF-8")
您可以验证您的选项是否与last
一起使用。例如,
sbt> last compile
要从git在项目上运行上述命令,请使用project
更改为该项目(有关详情,请参阅help project
)。