Java 如何获取WAR文件的名称?

Java 如何获取WAR文件的名称?,java,jakarta-ee,servlets,Java,Jakarta Ee,Servlets,类如何获取正在使用它的WAR文件的名称 这用于诊断目的。在servlet中 String warName = new File(getServletContext().getRealPath("/")).getName(); 您可以使用它。ServletContext.getContextPath() 这将返回应用程序的上下文路径(或根上下文的“”。在servlet容器中,没有两个应用程序具有相同的值 编辑: 对于那些不知道上下文路径是什么的人:它是应用程序的URI前缀。在大多数情况下,它默认

类如何获取正在使用它的WAR文件的名称

这用于诊断目的。

在servlet中

String warName = new File(getServletContext().getRealPath("/")).getName();

您可以使用它。

ServletContext.getContextPath()

这将返回应用程序的上下文路径(或根上下文的“”。在servlet容器中,没有两个应用程序具有相同的值

编辑:


对于那些不知道上下文路径是什么的人:它是应用程序的URI前缀。在大多数情况下,它默认为war文件的名称,除非您显式配置它。因此,如果您有foo.war,那么您可以在
http://localhost:8080/foo/
,上述函数将在JBoss AS7上返回“/foo”。

在名为
fu.war
的war中,其计算结果为
fu.war-a71410a57c33ed9
。在一些servlet容器中,这可能很好地工作,但规范显然不要求这样做。当容器配置为在内存中而不是在磁盘中展开WAR时,这将引发
NullPointerException
。不是吗?您如何知道OP的特定服务器配置?他在问题中什么也没说。@BalusC你是对的,它抛出了一个“NullPointerException”,如果是这样,你知道怎么做吗?