簡體   English   中英

錯誤:啟動進程構建器命令時無法訪問 jarfile

[英]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。 所以對我來說,問題僅限於我的代碼的提取......

已解決:我的路徑有誤...對不起

這與不同的路徑分隔符有關:

  • Windows 正在使用“\”
  • Linux 正在使用“/”

通常,可以通過使用File.separator屬性來解決以下問題,該屬性將根據您正在運行的操作系統返回正確的字符。 但是,我可以看到您最有可能使用 WSL,因此在這種情況下它可能不起作用,您必須對其進行硬編碼。

總而言之,您需要為 Windows 修復 jar 的路徑,並區分兩個操作系統的 output 路徑。

暫無
暫無

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

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