我正在使用 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...)而不是下载它?
最佳答案
终于可以解决问题了。我的 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
...
}
现在它工作得很好。
关于scala - Finatra 下载 HTML 文件而不是显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595711/