gpt4 book ai didi

java - 错误: Unable to access jarfile when I launch a process builder command

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:47 24 4
gpt4 key购买 nike

我用 Java 构建了一个程序,将 main 放入 jar 文件中,并且我想执行另一个程序。第二个程序也是一个 jarfile。

为了执行第二个程序,我使用进程构建器来使用这些参数执行第二个 jar 文件。但我没有工作,我收到了这样的消息:

错误:无法访问 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());

第一个程序的所有其余部分都完美执行。我使用生成参数的第一个程序来执行生成文件的第二个程序。该文件在第一个程序中使用...我无法单独启动第二个程序...

有什么想法吗?

更新:

这里,这些错误:

//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!

在代码的最后一行之后,我创建了不同的变量,并且这些变量存在并且不存在空值。所以对我来说,问题仅限于我的代码的提取......

已解决:我的路径有错误...抱歉

最佳答案

这与不同的路径分隔符有关:

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

通常,以下问题可以通过使用File.separator属性来解决,该属性将根据您正在运行的操作系统返回正确的字符。但是,我可以看到您很可能使用 WSL,因此在这种情况下它可能不起作用,您必须对其进行硬编码。

总而言之,您需要修复 Windows 的 jar 路径并区分两个操作系统的输出路径。

关于java - 错误: Unable to access jarfile when I launch a process builder command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58114299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com