带有重定向的java getRuntime()。exec()

时间:2015-03-03 21:42:53

标签: java rdf jena runtime.exec

我正在尝试在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");

1 个答案:

答案 0 :(得分:3)

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();