从Java运行时,SVN Info命令与终端中的命令不同

时间:2012-09-21 12:31:06

标签: java svn exec runtime.exec

我正在使用Java的svn命令来获取有关工作副本的信息。

final Process exec = Runtime.getRuntime().exec(
    new String[]{"svn","info","--xml","/path/to/wc"}
);
ByteStreams.copy(exec.getErrorStream(), System.err);
// ... more code to read output

这给出了错误输出

/path/to/wc
:  (Not a versioned resource)

但是,如果我在终端窗口中运行相同的命令,我会得到我想要的输出。我还试图在终端中运行时排除环境:

env -i svn info --xml /path/to/wc

但输出仍然正确。为什么从Java运行时它的行为会有所不同?

1 个答案:

答案 0 :(得分:1)

真正的/path/to/wc在其末尾有一个换行符。如果我更熟悉SVN错误输出,我可以看到它:

/path/to/wc
:  (Not a versioned resource)

请注意:

之前的换行符

我通过用纯Java exec("readlink -m " + path)替换早先的path.getCanonicalName()来意外地发现了这一点。