Servlets 如何在Grails中获得字符串形式的实际路径

Servlets 如何在Grails中获得字符串形式的实际路径,servlets,grails,embedded-tomcat-8,grails-3.3,Servlets,Grails,Embedded Tomcat 8,Grails 3.3,使用grails-3.3.1开发项目并生成可运行的WAR文件。当我使用命令运行时: java -jar build/libs/myproject-0.1.war 它返回以下行的null: serveltContext.getRealPath("/someSource"); 但当部署在Tomcat容器中时,它工作正常 然后尝试了以下方法: servletContext.getResource("someSource").getPath(); 它正在返回,但不是预期的,也不是getRealPa

使用grails-3.3.1开发项目并生成可运行的WAR文件。当我使用命令运行时:

java -jar build/libs/myproject-0.1.war
它返回以下行的
null

serveltContext.getRealPath("/someSource");
但当部署在Tomcat容器中时,它工作正常

然后尝试了以下方法:

servletContext.getResource("someSource").getPath();
它正在返回,但不是预期的,也不是
getRealPath()
返回的。 它是这样回来的:

D:/myprojects/myproject/build/libs/myproject-01.war*/

这对我没用。找到建议使用
getResourceAsStream()
的答案,但我不想要资源,我只想要
String

我找不到一个既能在本地工作又能在容器中部署的解决方案。我最终使用此解决方案来获取路径,具体取决于代码运行的环境:

def path
if (Environment.current == Environment.DEVELOPMENT) {
    path = java.nio.file.FileSystems.default.getPath("someSource").toAbsolutePath().toString()
} else {
    path = ServletContextHolder.servletContext.getRealPath("/someSource")
}

我无法找到一个既能在本地工作又能在容器中部署的解决方案。我最终使用此解决方案来获取路径,具体取决于代码运行的环境:

def path
if (Environment.current == Environment.DEVELOPMENT) {
    path = java.nio.file.FileSystems.default.getPath("someSource").toAbsolutePath().toString()
} else {
    path = ServletContextHolder.servletContext.getRealPath("/someSource")
}

它在Grails应用程序目录结构中的位置?另外,通过获取
字符串
路径而不是完整的文件/资源,您试图实现什么?我需要将该字符串作为参数传递给另一个资源,这将创建一个子报告,它位于Grails应用程序目录结构中的位置。此外,通过只获取
字符串
路径而不是完整的文件/资源,您试图实现什么?我需要将该字符串作为参数传递给另一个资源,这将创建一个子报告