我正在使用Finatra 2.1.6代码:
get("/:*") { request: Request =>
response.ok.fileOrIndex(
request.params("*"),
"index.html")
}
如果我从例如IntelliJ,它工作得很好并显示html文件。但是,如果我从已组装的jar启动服务器(使用sbt assembly
),则不会:每当我尝试访问我放入src/resources/index.html
的index.html时,它会尝试下载该文件contentType设置为application/octet-stream
,而不是text/html
。
如何更改行为以便呈现html文件(或css,js,...)而不是下载?
答案 0 :(得分:1)
最后可以解决问题。我对sbt assembly
的合并策略类似于
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
...
case meta(_) => MergeStrategy.discard
...
}
将丢弃文件mime.types
,该文件表示用于给定文件扩展名的MIME类型。我改成了
val metaMime = """META.INF(.)mime.types""".r
val meta = """META.INF(.)*""".r
assemblyMergeStrategy in assembly := {
...
case metaMime(_) => MergeStrategy.deduplicate
case meta(_) => MergeStrategy.discard
...
}
现在它完美无缺。