這是我的project.clj文件:的Compojure:訪問文件系統
(defproject org.github.pistacchio.deviantchecker "0.9.0"
:description "A one page application for keeping track of changes on deviantart.com gallieries"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]
[enlive "1.0.0"]
[compojure "0.6.4"]
[ring/ring-jetty-adapter "1.0.0-beta2"]]
:dev-dependencies [[lein-ring "0.4.6"]]
:ring {:handler org.github.pistacchio.deviantchecker.core/app}
:main org.github.pistacchio.deviantchecker.core)
,這我的路由:
(defroutes main-routes
(GET "/" [] (get-home))
(GET "/add" [d] (add-gallery d))
(GET "/delete" [d] (delete-gallery d))
(GET "/check" [d] (check-gallery d))
(route/resources "/")
(route/not-found "Page not found"))
我有一些網站的靜態文件中/resources/public
,我可以訪問它們。在代碼中,我還需要訪問文件系統上位於/resources/data
和/resources/tpl
上的一些文件。使用lein ring
服務器或lein run
,下面的調用工作正常
(java.io.File. "resources/tpl/home.html")
但lein uberwar
包裝的應用和部署在Tomcat下失敗時,我得到一個FileNotFoundException異常。也許這是因爲在當前工作目錄是項目根目錄,而在Tomcat下它是Tomcat的bin目錄。
例如,我有/resources/data/data.dat
在戰爭中打包爲/data/data.dat
,所以「resources/data/data.dat」在Tomcat下無法運行或「data/data.dat」在開發中無法運行。
順便說一句,在Compojure中管理這種方法的正確方法是什麼?謝謝。
嗨,感謝您的提示,但這並不能解決問題。例如,我將$/resources/data/data.dat打包爲$/data/data.dat,因此(io/resource「resources/data/data.dat」)在生產中不起作用或(io /資源「data/data.dat」)不適用於開發。 – pistacchio
好的,它的工作。我還必須將:resource-path「resources /」添加到project.clj – pistacchio