gpt4 book ai didi

java - 将变量添加到 processBuilder 时线程 "main"中出现异常

转载 作者:行者123 更新时间:2023-11-30 06:19:10 29 4
gpt4 key购买 nike

我有一个执行 shell 脚本的 ProcessBuilder,它工作得很好,直到我想从变量向 shell 脚本添加参数。

Exception in thread "main" java.lang.NullPointerException
at testOne.main(testOne.java:10)
<小时/>

第 9 行:

String myarg = "testarg";

第 10 行(给我错误的那一行):

final ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c",
testOne.class.getResource("/test.sh " + myarg).getPath());

我知道我已将/test.sh 与字符串连接起来,并且现在它将被视为文件名,这就是它给我错误的原因。然而我不知道如何解决它。

最佳答案

final ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c",
testOne.class.getResource("/test.sh " + myarg).getPath());

这试图在一行中做太多事情。您应该将其分成几个部分,将中间结果分配给变量,以便您可以更轻松地调试它:

final URL bashScriptResource = testOne.class.getResource("/test.sh " + myarg);
final String bashScriptPath = bashScriptResource.getPath()
final ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c",
bashScriptPath);

现在使用调试器或添加 System.out.println() 调用来打印每个变量的值。这将准确地告诉您问题出在哪里。

关于java - 将变量添加到 processBuilder 时线程 "main"中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552496/

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