Java 如何在Struts 2中获得项目路径?

Java 如何在Struts 2中获得项目路径?,java,file-upload,path,struts2,Java,File Upload,Path,Struts2,例如: <constant name="struts.multipart.saveDir" value="temp" /> 将保存到: \阿帕奇雄猫 7.0.14\bin\temp\upload__781d3178_13831f5e207__8000_00000003.tmp 那么,我应该如何让它进入: C:\my\u project\build\web\temp\ 不使用绝对文件路径,因为我不想在每次项目移动时重新配置它。基本上我只想要相对路径 编辑1: 我认为这无关紧要,但我使

例如:

<constant name="struts.multipart.saveDir" value="temp" />
将保存到:

\阿帕奇雄猫 7.0.14\bin\temp\upload__781d3178_13831f5e207__8000_00000003.tmp

那么,我应该如何让它进入:

C:\my\u project\build\web\temp\

不使用绝对文件路径,因为我不想在每次项目移动时重新配置它。基本上我只想要相对路径

编辑1:

我认为这无关紧要,但我使用的是Struts 2 2.1.8.1版

编辑2:

我正在使用ApacheTomcat。这就是我部署项目的目的地。没有办法在struts.xml中引用Tomcat的项目部署位置吗

比如:

<constant name="struts.multipart.saveDir" value="..\webapps\project\build\web" />
项目是开发人员工作站上应用程序源的所在地


在运行时,您得到的只是运行已部署war的服务器。应用程序的源以及它们在工作站上的目录与应用程序服务器无关。它不在乎,也不必知道。appserver机器上可能有这样一个目录,但不确定,它是一个与机器上所有其他目录一样的目录。除了在一些配置文件中指定它之外,没有其他方法了。

有几种方法可以做到这一点。以下是最简单的方法:

<constant name="struts.multipart.saveDir" value="${catalina.home}/webapps/project/web/temp"/>
你必须把你的卡塔琳娜回家

更新

也许这样,在web.xml中:

<context-param>
  <param-name>catalina.home</param-name>
  <param-value>path/to/your/tomcat</param-value>
</context-param>
更新


我还发现了一个链接,它是Log4j的,但它是一样的

不,不可能。但是使用一个相对路径,就像你已经在做的那样,将导致一个相对于tomcat安装目录的文件夹。它是如何工作的?这个目录存在吗?你试过用前斜杠而不是反斜杠吗?为什么将project/build/web放在tomcat的webapps目录中?它应该包含war文件或分解的war目录。你能告诉我它应该是怎样的吗?就像从一个工作示例中删除一行一样?我认为这可能更简单。在您自己的问题中有一行代码:您使用temp作为属性的值,文件最终位于\Apache Tomcat 7.0.14\bin\temp`。所以这个目录是相对于tomcat的bin`directory.Jaiwo99的,就像往常一样!哈哈,谢谢你。唯一的问题是,当我在本地开发时,项目被部署到c:\project\build,当我在服务器上部署它时,它会被部署到catalina.home\webapps\project\build@ThreaT呵呵,那太酷了!生成文件夹只存在于您的开发环境中,以后不会出现在您的应用程序中。