我創建了一個應用程序,該應用程序使用Groovy,WAR和Gradle作爲設置,而不是JPA,MVC等...我爲該項目選擇的設置。當我從STS開始測試並開始工作時,我一直在努力並將其作爲Spring Boot項目運行。Spring Boot WAR與JAR文件路徑差異
我決定爲了體驗啓動應用程序而生成WAR並將其放在Tomcat品牌實例中。
我遇到的錯誤都與文件路徑有關,主要是FileNotFoundException
。我在src/main/resources/static
下有一個目錄,我放置了所有的靜態內容,css等等......當我在Tomcat外部運行WAR時,它正在尋找Tomcat /bin/
目錄中的靜態內容。如果我將文件複製到該目錄並重新啓動Tomcat,它可以正常工作。
我試圖跨越的最大障礙是知道文件路徑究竟是如何轉移到WAR以及我應該在哪裏放置文件。我以爲我在正確的道路上,但也許我誤解了這是如何工作的。
編輯
只是用於測試,我跑了WAR文件爲可執行,它工作的開箱。當我將它帶到現有的Tomcat實例時,我只會遇到問題。知道它是如何工作並通過適當的設置讓它正常工作或多或少,這就是我所追求的。
編輯
我明白了爲什麼這是/bin
目錄;它與我從何處啓動它有關。我從那個目錄運行了./catalina run
,這恰好是當時它想要靜態資源的目錄。
我的假設是你把你的戰爭放在webapps文件夾中並啓動tomcat。這樣你的應用程序被部署到'http:// localhost:/<戰爭名稱>'。嘗試將war重命名爲ROOT.war,重新啓動tomcat並嘗試訪問'http:// localhost:' –
上的應用程序。這正是我所做的,我將WAR重命名爲ROOT並將其放入'webapps'文件夾 –
這很奇怪,Spring Boot暴露了來自classpath靜態文件夾的靜態文件夾,例如,如果你在src/main/resources/static中有'myfile.html',你應該可以通過http://訪問id localhost:/myfile.html'。你有靜態資源的任何自定義配置嗎? –