簡體   English   中英

ProcessBuilder無法訪問相對文件夾位置

[英]ProcessBuilder can't access a relative folder location

我正在嘗試使用ProcessBuilder從Java代碼執行第三方JAR。 該JAR要求您在執行此JAR時必須位於安裝目錄中,否則它將不起作用。 以下是此第三方JAR的文件夾結構:

C:\\Program Files\\MSG MCE Software I10
C:\\Program Files\\MSG MCE Software I10\\jre
C:\\Program Files\\MSG MCE Software I10\\jre\\bin

這是我正在使用的代碼:

String cmdLine = "\"jre\\bin\\java\" -Xms512m -Xmx1024m -cp \"C:\\Program Files\\MSG MCE Software I10\\msgmce.jar;C:\\Program Files\\MSG MCE Software I10\\*:.\" com.mmm.his.msgmce.Main -i \"C:\\drginput\\"+inFileName+"\" -o \"C:\\drgoutput\\"+outFileName+"\" ";
ProcessBuilder builder = new ProcessBuilder( "cmd.exe", "/c", "cd \"C:\\Program Files\\MSG MCE Software I10\"&&"+cmdLine);
System.out.println("cmdLine->"+cmdLine); 
Process p = builder.start();

如您所見,我最初嘗試導航到安裝目錄"C:\\\\Program Files\\\\MSG MCE Software I10\\" ,然后嘗試執行Java可執行文件。

問題是我得到"System cannot find file specified"因為它找不到"jre/bin/java"的相對路徑。

現在,它可以在一台計算機上運行,​​而不能在另一台計算機上運行。 在創建ProcessBuilder並調用cmd.exe ,我導航到安裝主目錄,因此我應該能夠訪問jre/bin/java文件。

有誰知道為什么它可以在一台機器上運行而不在另一台機器上運行?

好的,我知道了。 在運行它的計算機上,所有程序(例如Eclipse,Tomcat)都安裝在同一C驅動器上,但是在另一台計算機上,Eclipse安裝在不同的驅動器上。

第三方JAR安裝在C驅動器上,我的程序在Eclipse上但在D驅動器上運行。 由於某種原因,ProcessBuilder中的C驅動器更改目錄無法正常工作。 出於安全原因,不確定這是否是ProcessBuilder的限制,但是將所有內容安裝在單個驅動器上都是可行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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