2016-03-15 44 views
1

我創建了一個應用程序,該應用程序使用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,這恰好是當時它想要靜態資源的目錄。

+1

我的假設是你把你的戰爭放在webapps文件夾中並啓動tomcat。這樣你的應用程序被部署到'http:// localhost:/<戰爭名稱>'。嘗試將war重命名爲ROOT.war,重新啓動tomcat並嘗試訪問'http:// localhost:' –

+0

上的應用程序。這正是我所做的,我將WAR重命名爲ROOT並將其放入'webapps'文件夾 –

+1

這很奇怪,Spring Boot暴露了來自classpath靜態文件夾的靜態文件夾,例如,如果你在src/main/resources/static中有'myfile.html',你應該可以通過http://訪問id localhost:/myfile.html'。你有靜態資源的任何自定義配置嗎? –

回答

1

首先,我想感謝Evgeni的評論,並幫助我朝着正確的方向前進。我就建立一個新的項目提出了他的建議,以確定可能出錯的地方。這樣做後,我能夠消除我正面臨的gradle錯誤,並且一切都朝着正確的方向發展。

這個問題的答案我問的問題:戰爭VS jar文件路徑之間的區別......

沒有任何區別,如果你有你的項目配置正確。我遇到了路徑問題,因爲它們是這樣硬編碼的:src/main/resources ...在控制器和其他類中,我試圖訪問資源。一旦我能夠通過將硬編碼路徑替換爲資源來解決該問題,我就不再有路徑問題,並且能夠在外部Tomcat中運行戰爭,並且也可以作爲獨立的可執行文件運行。

相關問題