我创建了一个应用程序,该应用程序使用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'。你有静态资源的任何自定义配置吗? –