我使用的是Finatra 2.1.6,代码如下:
get("/:*") { request: Request =>
response.ok.fileOrIndex(
request.params("*"),
"index.html")
}例如,如果我在IntelliJ上运行它,它工作得很好,并显示html文件。但是,如果我从一个汇编的jar启动服务器(使用sbt assembly),它就不会:每当我试图访问index.html时,它都会尝试下载文件,因为contentType设置为application/octet-stream而不是text/html。
如何更改行为,使其呈现html文件(或css、js等)?而不是下载它?
发布于 2016-06-03 16:59:35
终于可以解决这个问题了。我对sbt assembly的合并策略是这样的
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
...
case meta(_) => MergeStrategy.discard
...
}其将丢弃表示用于给定文件扩展名的哪种MIME类型的文件mime.types。我将其更改为
val metaMime = """META.INF(.)mime.types""".r
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
...
case metaMime(_) => MergeStrategy.deduplicate
case meta(_) => MergeStrategy.discard
...
}现在,它工作得非常好。
https://stackoverflow.com/questions/37595711
复制相似问题