[英]How do I run an executable from a relative path in Java
我正在使用以下代碼來執行.Net編譯的可執行文件並存儲輸出。 我希望能夠將.exe放入另一個程序包中並運行它。 但是,每當我嘗試運行代碼時,它都會告訴我找不到文件,因為我沒有將文件的完整路徑放入文件中。 有沒有一種簡單的方法可以解決此問題,例如將其包含在類路徑中或我缺少的內容中。
public class ActiveDirectoryQuery {
private String email = "";
public ActiveDirectoryQuery(){}
public void setEmail(String host){
this.email = host;
}
public String getEmail(){
return this.email;
}
public String getUserName() throws IOException{
Process process = new ProcessBuilder(
"/relative/path/to/EmailFQDN.exe", this.email).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
String fullOutput= "";
while ((line = br.readLine()) != null) {
System.out.println(line);
fullOutput=fullOutput+line+"\n";
}
return fullOutput;
}
}
如果該位置是相對於類文件的(您在注釋中說過;但是...確定嗎?那很不尋常),請嘗試通過以下方式獲取絕對路徑:
URL exe = ActiveDirectoryQuery.class.getResource("relative/path/to/EmailFQDN.exe");
File exefile = new File(exe.getPath());
如果exe文件與類文件位於同一軟件包中,則可以執行以下操作:
ActiveDirectoryQuery.class.getResource("/EmailFQDN.exe").getFile()
獲取該文件的路徑。
流程構建器中的路徑與類路徑或包無關。 它只是期望該exe位於您指定的目錄中。
如果使用相對路徑,則需要指定相對於Java進程當前工作目錄的路徑。 如果您是從命令行運行的,那么它將是您啟動該過程時所在的目錄。
還請記住,如果要使其成為相對路徑,請除去目錄上的前導斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.