java getRuntime().exec() 带重定向

java getRuntime().exec() with redirection

我正在尝试在 java 中执行终端命令,但我得到了错误的结果(即使命令正在执行)。当我将相同的命令粘贴到终端时,它会产生正确的输出。我猜问题是由于重定向字符 ('<','>') 引起的,但我还没有找到解决方案。我正在使用 eclipse 和 osx。 下面是命令,非常感谢。

Process p = Runtime.getRuntime().exec("java -jar filePath/rdfslice_1.6.jar "
 +
 "-source filePath/myData.nt -patterns {?s1 <http://www.europeana.eu/schemas/edm/isShownAt> ?o1.} " 
+
"-out filePath/output.out -order S");

Runtime.exec 已过时,不应再用于任何用途。它的替代是ProcessBuilder。使用时无需引用或转义任何内容:

ProcessBuilder builder = new ProcessBuilder(
    "java",
    "-jar",
    "filePath/rdfslice_1.6.jar",
    "-source",
    "filePath/myData.nt",
    "-patterns",
    "{?s1 <http://www.europeana.eu/schemas/edm/isShownAt> ?o1.}",
    "-out",
    "filePath/output.out",
    "-order",
    "S");

Process p = builder.inheritIO().start();