【问题标题】:SVN Info command different when run from Java than in terminal从 Java 运行时的 SVN Info 命令与在终端中运行时不同
【发布时间】:2012-09-21 12:31:05
【问题描述】:

我正在使用来自 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 运行时它的行为会有所不同?

【问题讨论】:

  • 你真正的“厕所路径”是否包含空格?
  • @SeanBright 不,它没有,但即使有,也不应该将命令作为数组传递以防止导致任何错误吗?
  • 你是在工作目录的终端运行svn命令吗?
  • @jtahlborn 不,终端的工作目录是我的主目录,不是工作副本。

标签: java svn exec runtime.exec


【解决方案1】:

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

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

注意:之前的换行符

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 2019-04-01
    • 2015-04-02
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多