2015-01-15 55 views
0

我想在jsp應用程序中執行一個終端命令(包括一個jar文件)。 當我在終端中執行它時,該命令正常工作。但是當我在java中使用它時,我得到了一個特定於我試圖執行的程序的錯誤,這意味着我可以訪問該文件夾,運行它,但出現語法錯誤或者我錯過了某些東西。終端命令不能在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(); 

任何幫助將不勝感激。 Regards

+0

您可以顯示您收到的錯誤嗎? – user3062946 2015-01-15 16:35:23

+0

使用「java」的絕對路徑? - 我仍然希望看到那個錯誤消息和可用的shell命令。 – laune 2015-01-15 16:35:28

+0

直接從終端: java -jar /AbsolutePath/rdfslice_1.42.jar -source /AbsolutePath/rdfslice/test.nt -patterns「{?s?p?o}」-out /AbsolutePath/rdfslice/eclipse.out - 訂單「S」 – emrahozkan 2015-01-15 16:45:30

回答

2

如果它會通過一個殼,間距是必不可少的。

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"); 
+0

謝謝,但實際上它是在一行中,我爲了可讀性而將它改爲這種形式。 – emrahozkan 2015-01-15 16:26:03