簡體   English   中英

如何從Java中的相對路徑運行可執行文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM