我有一个执行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连接起来,现在它将被视为文件名,这就是为什么它会给我错误。然而,我无法解决它。
答案 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()
调用来打印每个变量的值。这将显示问题的确切位置。