繁体   English   中英

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

[英]Get relative path in Java EE project

我有一个普通的Java类(JSP和Servlet都没有),该类对文件执行一些处理,例如读取,写入和执行一些可执行文件。 如何知道每个文件的相对路径?

我知道getClass().getResourceStream() ,但这仅对读取文件有用。 而且我知道getServletContext().getRealPath()但是我的代码在普通Java类中而不是servlet中。

我想做以下事情

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

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

只需将其结果传递给Java类即可。

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

请注意,当部署的WAR不在本地磁盘文件系统中而是在内存中扩展时, getRealPath()将返回null 某些生产服务器配置将执行此操作。

更好的方法是将exe文件的位置设置为配置文件设置。 例如

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

该配置文件可以依次放在类路径中,也可以将其路径添加到类路径中。 另请参见在基于Servlet的应用程序中的何处放置以及如何读取配置资源文件?

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

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

然后,您可以使用绝对路径来发出命令。 另请参阅: File的JavaDoc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM