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