当我尝试在Windows上以编程方式运行java -jar
命令时会发生奇怪的事情。
运行如下命令时:
Process p = Runtime.getRuntime().exec(cmd); //cmd string is ok
p.waitFor();
我收到错误
错误:无法找到或加载主类�jar
然而,当我试图像这样运行它时:
Process p = Runtime.getRuntime().exec("hard coded command with parameters");
p.waitFor();
在这种情况下,它工作正常。
cmd字符串是使用String.Format
生成的,它通过Spring Web服务接收其参数:
cmd = String.format("java –jar %s –o win -i %s -n %s -d %s -s %s", jarLocation, param1, param2, tgtFilePath, srcFilePath);
我怀疑这个问题与参数的编码有某种关系。 有没有办法确定?我可以通过Web服务以某种方式更改字符串的编码吗?我在Windows上测试Web服务,但最终它可能会在Solaris工作站上进行测试。
答案 0 :(得分:0)
在查看两个字符串的字节后,我发现由于某种原因,String.Format
可能会生成' - '字符作为en-dash(格式字符串包含U + 2013)而不是连字符(U + 002D)。我不确定为什么会这样做,但我将一个连字符粘贴到格式化的字符串中,然后一切正常。