gpt4 book ai didi

java - 终端命令在java中不起作用

转载 作者:行者123 更新时间:2023-12-02 05:03:59 28 4
gpt4 key购买 nike

我正在尝试在 jsp 应用程序中执行终端命令(包括 jar 文件)。当我在终端中执行该命令时,该命令运行良好。但是当我在java中使用它时,我收到一个特定于我尝试执行的程序的错误,这意味着我可以访问该文件夹,运行它,但不知何故存在语法错误或者我丢失了一些东西。

Process p = Runtime.getRuntime().exec("java -jar /AbsoluteFilePath/rdfslice_1.42.jar"+
" -source /AbsoluteFilePath/test.nt"+
" -patterns \"{?s ?p ?o}\" -out /AbsoluteFilePath/output.out" +
" -order \"S\" -debug -debugGraphSize 1024");

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.println(result);

我也尝试过进程构建器,但没有产生任何不同的结果。我为流程构建器尝试的代码是:

List<String> list = Arrays.asList(
"java",
"-jar",
"/AbsoluteFilePath/rdfslice_1.42.jar",
"-source",
"/AbsoluteFilePath/test.nt",
"-pattern", "'{?s ?p ?o}'", "-out",
"/AbsoluteFilePath/output.out",
"-order", "'S'" );

// create the process builder
ProcessBuilder pb = new ProcessBuilder(list);


Process p = pb.start();

任何帮助将不胜感激。问候

最佳答案

如果它要穿过外壳,间距是必不可少的。

Process p = Runtime.getRuntime().exec("java -jar /AbsoluteFilePath/rdfslice_1.42.jar"+
" -source /AbsoluteFilePath/test.nt"+
" -patterns \"{?s ?p ?o}\" -out /AbsoluteFilePath/output.out" +
" -order \"S\" -debug -debugGraphSize 1024");

注意续行前面的空格。

这不会通过 shell,因此参数必须作为单独的字符串提供。

Process p = Runtime.getRuntime().exec("java", "-jar",
"/AbsoluteFilePath/rdfslice_1.42.jar",
"-source", "/AbsoluteFilePath/test.nt",
"-patterns", "{?s ?p ?o}",
"-out", "/AbsoluteFilePath/output.out",
"-order", "S", "-debug2", "-debugGraphSize", "1024");

关于java - 终端命令在java中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967834/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com