[英]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.