[英]Error: Unable to access jarfile when I launch a process builder command
我在 Java 中構建了一個程序,其中一個 main 到一個 jarfile 中,我想執行另一個程序。 第二個程序也是一個jarfile。
為了執行第二個程序,我使用進程構建器來執行帶有這些 arguments 的第二個 jarfile。 但我沒有工作,我有這個消息:
錯誤:無法訪問 jarfile 路徑/second_program.jar
首先,我認為它的路徑是錯誤的。 但是,我已經在 windows 和 linux 的終端上執行了第二個 jarfile,沒有任何問題。
//IN THE FIRST PROGRAM
Process process = null;
List<String> commands = new ArrayList<String>();
if (server.equals("TEST_linux")) {
commands.add("/bin/java");
commands.add("-jar");
commands.add("/mnt/c/Users/second_program.jar");
commands.add("param1");
commands.add("param2");
} else {
commands.add("java");
commands.add("-jar");
commands.add("C:/Users/second_program.jar");
commands.add("param1");
commands.add("param2");
}
System.out.println(commands);
//Execution de la commande externe
ProcessBuilder pb = new ProcessBuilder(commands);
System.out.println(pb.directory());
pb.directory(new File(localFolder));
System.out.println(pb.directory());
pb.redirectErrorStream(true);
process = pb.start();
StringBuilder out = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null, previous = null;
file_generated_by_second_program = output_folder + "/" + panel + "/file_generated_by_second_program.txt";
myFile = new File(file_generated_by_second_program);
writer = new BufferedWriter(new FileWriter(myFile, true));
System.out.println(br.readLine());
第一個程序的所有 rest 都在完美執行。 我使用生成 arguments 的第一個程序來執行生成文件的第二個程序。 該文件在第一個程序中使用后...我無法單獨啟動第二個程序...
有任何想法嗎?
更新:
在這里,這些錯誤:
//Windows before suggestions :
Error: Unable to access jarfile C:/Users/second_program.jar
//Windows after suggestions :
Error: Unable to access jarfile C:\Users\second_program.jar
//Linux :
Error: Unable to access jarfile "/mnt/c/Users/second_program.jar"
System.out.println(br.readLine()); //==> this command doesn't execute too!
在我的代碼的最后一行之后,我創建了不同的變量並且這些變量存在並且沒有 null。 所以對我來說,問題僅限於我的代碼的提取......
已解決:我的路徑有誤...對不起
這與不同的路徑分隔符有關:
通常,可以通過使用File.separator
屬性來解決以下問題,該屬性將根據您正在運行的操作系統返回正確的字符。 但是,我可以看到您最有可能使用 WSL,因此在這種情況下它可能不起作用,您必須對其進行硬編碼。
總而言之,您需要為 Windows 修復 jar 的路徑,並區分兩個操作系統的 output 路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.