Java JSTL URL标记没有';我不在Heroku工作

Java JSTL URL标记没有';我不在Heroku工作,java,url,heroku,jstl,Java,Url,Heroku,Jstl,我有一个简单的应用程序,我已经在本地(在Tomcat中)以及Google App Engine和Heroku上部署了它 该应用程序使用JSTL标记,它们在所有部署中都能正常工作,除了URL标记(),该标记仅在Heroku上预加了一个额外的正斜杠,这会把一切搞砸。我的意思是: <c:url value='/laundryLists/search.htm'/> 这显然是错误的 值得一提的是,其他JSTL标记(如“forEach”)在Heroku中工作良好 所以我的问题是,为什么会在He

我有一个简单的应用程序,我已经在本地(在Tomcat中)以及Google App Engine和Heroku上部署了它

该应用程序使用JSTL标记,它们在所有部署中都能正常工作,除了URL标记(
),该标记仅在Heroku上预加了一个额外的正斜杠,这会把一切搞砸。我的意思是:

<c:url value='/laundryLists/search.htm'/>
这显然是错误的

值得一提的是,其他JSTL标记(如“forEach”)在Heroku中工作良好

所以我的问题是,为什么会在Heroku上发生这种情况,我如何修复它(除了对URL进行硬编码)?

当启动WAR文件时,它只是Tomcat的一个薄薄包装,允许从命令行轻松运行。在当前部署的webapprunner版本中,默认的上下文路径是
/
,这是额外斜杠的来源。要将路径设置为其他内容(包括空字符串),可以使用
--path
参数。要使用WAR部署为Heroku应用程序设置此选项,可以在
WEBAPP\u RUNNER\u OPTS
config变量中进行设置,如下所示:

heroku config:add WEBAPP_RUNNER_OPTS="--path ''"

为了补充莱恩布雷纳德说过的话,以防有人遇到和我一样的麻烦。我发现在部署时尝试在命令行设置此标志没有任何效果,可能是因为我在执行git push时进行了部署,而没有使用命令行部署war

我必须更新项目中的/proc文件,并在其中添加选项。所以我的看起来像: web:java$java_OPTS-Dspring.profiles.active=prod-jar target/dependency/webapp-runner.jar--port$port--path''target/*.war

这为我解决了这个问题

http://laundryLists/search.htm
heroku config:add WEBAPP_RUNNER_OPTS="--path ''"