Spring Boot WAR与JAR文件路径差异

时间:2016-03-15 14:15:42

标签: spring spring-mvc tomcat gradle

我创建了一个使用Groovy,WAR和Gradle进行设置的应用程序,而不是我为项目选择的JPA,MVC等。每当我从STS开始测试并继续工作时,我一直在研究并将其作为Spring Boot项目运行。

为了体验启动应用程序,我决定生成一个WAR并将其放在Tomcat的品牌实例中。

我遇到的错误都与文件路径有关,主要是java.util.Timer。我在FileNotFoundException下有一个目录,我放置了所有静态内容,css等...当我在Tomcat外部运行WAR时,它在Tomcat src/main/resources/static中查找静态内容目录。如果我将文件复制到该目录并重新启动Tomcat,它可以正常工作。

我试图越过的最大障碍是知道文件路径到底是如何转移到WAR的,以及我应该放置文件的确切位置。我以为我走的是正确的道路,但也许我误解了它的运作方式。

修改

为了测试,我将WAR文件作为可执行文件运行,它开箱即用。当我将它带到现有的Tomcat实例时,我只会遇到问题。通过正确的设置来了解它是如何工作并使其正常工作,这或多或少都是我所追求的。

修改

我意识到为什么它是/bin/目录;它与我从哪里发射它有关。我从该目录运行/bin,恰好是那时它想要静态资源的目录。

1 个答案:

答案 0 :(得分:1)

首先,我要感谢Evgeni的评论,并帮助我朝着正确的方向前进。我提出了关于创建一个新项目的建议,以确定可能出现的问题。在这样做之后,我能够消除我面临的谜语错误,一切都朝着正确的方向发展。

我问的问题的答案:战争与jar文件路径之间的区别......

如果你的项目配置正确,没有任何区别。我遇到了路径问题,因为它们是硬编码的:src / main / resources ...在控制器和我试图从中访问资源的其他类中。一旦我能够通过将硬编码路径替换为资源来解决该问题,我就不再遇到路径问题,并且能够在外部Tomcat中运行战争,也可以作为独立的可执行文件。

相关问题