获取Java EE项目中的相对路径

时间:2012-06-30 23:33:49

标签: java jsp java-ee

我有一个普通的Java类(既不是JSP也不是Servlet),它对读取,写入和执行某些可执行文件等文件执行某些处理。如何知道每个文件的相对路径?

我知道getClass().getResourceStream(),但这仅适用于阅读文件。我知道getServletContext().getRealPath(),但我的代码是普通的Java类而不是servlet。

我想做以下

String relativePath = "path/to/exe";
Runtime.getRuntime.exec(relativePath);

2 个答案:

答案 0 :(得分:1)

  

我知道getServletContext().getRealPath()但我的代码是普通的Java类而不是servlet

将结果传递给Java类。

String desiredPath = calculateItSomehowBasedOn(getServletContext().getRealPath("/"));
yourJavaClass.executeExe(desiredPath);

请注意,当部署的WAR未在本地磁盘文件系统中展开时,getRealPath()将返回null,而是在内存中。一些生产服务器配置会这样做。

更好的方法是将exe文件的位置设置为配置文件。 E.g。

path.to.exe = /absolute/path/to/exe

此配置文件又可以放在类路径中,或者可以将其路径添加到类路径中。另请参阅Where to place and how to read configuration resource files in servlet based application?

答案 1 :(得分:0)

您的问题似乎是针对Java SE而非Java EE。我假设你的“exe”文件是相对于你的java项目的?要获得绝对路径,您可以使用:

File f = new File("path/to/exe");
String exePath = f.getAbsolutePath();

然后您可以使用绝对路径发出命令。另见:JavaDoc of File