0

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

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 运行时它的行为会有所不同?

4

1 回答 1

1

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

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

注意前面的换行符:

exec("readlink -m " + path)我通过用纯 Java替换早期偶然发现了这一点path.getCanonicalName()

于 2012-09-21T12:46:17.350 回答