2

我正在使用带有此代码的 Finatra 2.1.6:

get("/:*") { request: Request =>
response.ok.fileOrIndex(
  request.params("*"),
  "index.html")
}

如果我从例如 IntelliJ 运行它,它工作得非常好并显示 html 文件。但是,如果我从组装好的 jar 启动服务器(使用sbt assembly),它不会:每当我尝试访问我放入的 index.html 时src/resources/index.html,它会尝试下载文件,因为 contentType 设置为application/octet-stream而不是例如,text/html

如何更改行为以呈现 html 文件(或 css、js、...)而不是下载它?

4

1 回答 1

3

终于可以解决问题了。我的合并策略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
  ...
}

现在它工作得很好。

于 2016-06-03T08:59:34.980 回答