将变量添加到processBuilder时,线程“main”中的异常

时间:2018-01-31 22:28:44

标签: java

我有一个执行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与String连接起来,现在它将被视为文件名,这就是为什么它会给我错误。然而,我无法解决它。

1 个答案:

答案 0 :(得分:1)

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()调用来打印每个变量的值。这将显示问题的确切位置。