簡體   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