Web applications 使用来自uberjar的文件响应

Web applications 使用来自uberjar的文件响应,web-applications,jar,clojure,compojure,ring,Web Applications,Jar,Clojure,Compojure,Ring,从uberjar运行时,Ring的文件响应对我不起作用。我两个都试过了 (response/file-response "index.html" {:root "resources/public"}) 及 如何在uberjar中的“/”处提供index.html?您需要使用ring.util.response/resource response来提供类路径上的文件。假设您希望提供一个index.html文件,该文件位于überjar的resources目录中,参数几乎与调用文件响应时的参数完全

从uberjar运行时,Ring的文件响应对我不起作用。我两个都试过了

(response/file-response "index.html" {:root "resources/public"})


如何在uberjar中的“/”处提供index.html?

您需要使用
ring.util.response/resource response
来提供类路径上的文件。假设您希望提供一个
index.html
文件,该文件位于überjar的
resources
目录中,参数几乎与调用
文件响应时的参数完全相同:

(response/resource-response "index.html" {:root "public"})

它是
“public”
而不是
“resources/public”
,因为
resources
是包含在überjar中的顶级目录之一,所以
public
将在顶级的类路径上找到。(如果从文件系统而不是从一个überjar运行,这也是正确的;然后路径需要与类路径上的某个顶级目录相对。)

是有道理的,但这对我不起作用。当我点击“/”时,我得到一个404。我的index.html文件位于resources/public中,我还没有定义:resources in My project.clj,所以默认情况下它应该是resources/dir,对吗?我应该提到
资源响应
返回
未找到
即使我通过lein运行应用程序,而不仅仅是从uberjar运行。啊,对,这应该是
{root“public”}
。我马上就搞定答案。
(response/resource-response "index.html" {:root "public"})