当我尝试在 Windows 上以编程方式运行 java -jar
命令时,发生了一些奇怪的情况。
运行这样的命令时:
Process p = Runtime.getRuntime().exec(cmd); //cmd string is ok
p.waitFor();
我收到错误
Error: Could not find or load main class �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);
我怀疑这个问题与参数的编码有关。 有办法确定吗?当我通过网络服务接收到字符串时,我可以以某种方式更改它的编码吗?我正在 Windows 上测试 Web 服务,但如果重要的话,最终它可能会位于 Solaris 站点上。
最佳答案
查看两个字符串的字节后,我发现由于某种原因,String.Format
可能会生成“-”字符作为短破折号(格式字符串包含 U+2013)而不是连字符 (U+002D)。我不确定为什么这样做,但我将连字符复制粘贴到格式化的字符串中,然后一切正常。
关于java - 无法通过 Web 服务以编程方式运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015241/