2012-10-30 89 views
0

Iam嘗試從另一個java程序(exec.java)運行java文件(editor.java)。它需要輸入和顯示文件未找到message.please給我通過我建議成功運行一個程序。無法從另一個Java程序運行java程序

import java.io.*; 
    public class exec { 

    public static void main(String argv[]) { 
    try { 
    InputStreamReader isr=new InputStreamReader(System.in); 
    BufferedReader br=new BufferedReader(isr); 

    System.out.println("Enter the java class name"); 
    String s=br.readLine(); 
    String[] cmd = {"java", "-cp", "E:\netbeans\Project\src", s}; 
    Process pro=Runtime.getRuntime().exec(s); 
    try (BufferedReader in = new BufferedReader(new InputStreamReader(pro.getInputStream()))) { 
     String line=null; 
     while((line=in.readLine())!=null) { 
      System.out.println(line); 
     } 
     } 
     } catch(Exception err) { 
    err.printStackTrace(); 
    } 
} 


java.io.IOException: Cannot run program "editor.java": CreateProcess error=2, The system cannot find the file specified 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
at java.lang.Runtime.exec(Runtime.java:615) 
at java.lang.Runtime.exec(Runtime.java:448) 
at java.lang.Runtime.exec(Runtime.java:345) 
at project.exec.main(exec.java:18) 
+0

你是否將'editor.java'作爲commadline參數傳遞? –

+0

yes iam將editor.java作爲命令行參數傳遞 – user1758401

+0

您需要傳遞一個類文件。你不能用java命令運行一個.java文件嗎? –

回答

3

您需要在您的命令行參數中傳遞您的.class file。您不要使用java命令運行.java文件。

只要通過editor作爲參數,如果包含您的main method的類是editor.class

另外,請按照下面的@Azodious's答案。

另外,您可能需要將array中的路徑更改爲包含class file的路徑。 src文件夾可能沒有你的class file

因此,運行你的程序使用: - java exec editor。我認爲這應該工作。

+0

可以請你給我java執行編輯器 – user1758401

+0

@ user1758401的步驟。首先檢查你想運行的類文件在哪裏。然後將路徑複製到您的代碼中包含該類文件的文件夾中,在您創建的'cmd'數組中。現在,使用以下命令運行上述代碼: - java exec editor。我認爲'editor'是包含'main'方法的'class'的名稱。您可以使用相應的「類文件名」來更改該名稱。 –

+0

@ user1758401。此外,請檢查您的'classpath'包含的路徑直到包含您的'class'文件的文件夾。 –

1

您還沒有傳遞命令數組exec方法

將其更改爲以下:

Process pro=Runtime.getRuntime().exec(cmd); 

和您的錯誤表明你正在嘗試運行的src文件:

Cannot run program "editor.java" 

你應該通過.class file name來運行它。

+0

問題仍然存在。相同的錯誤消息。 – user1758401

+0

嘗試僅使用:E:\ netbeans \ Project – Azodious

0

E:\ netbeans的\項目\ SRC你發現只有源文件,源文件ü無法運行,,,

嘗試在類文件裏面做* E發現:\ netbeans的\項目\編譯\類*

String[] cmd = {"class", "-cp", "E:\netbeans\project\build\classes\", s}; 

注意:檢查您的類路徑

謝謝

+0

java.lang.RuntimeException:不可編譯的源代碼 - 在project.exec.main處非法啓動表達式\t – user1758401

0

的多個問題 -

  1. 您正在嘗試運行命令行命令 「editor.java」。您的命令數組保持未使用狀態。
  2. 您的編譯類與源代碼位於同一目錄嗎?通常,在eclipse中,類將在bin文件夾中生成。你應該做的事 -

    String[] cmd = {"java", "-cp", "E:\netbeans\Project\bin", s};
    Process pro=Runtime.getRuntime().exec(s);

  3. 是在默認包你editor.java?如果不是,則在運行該命令時需要輸入完全限定名稱。

我會建議嘗試從命令行運行類,然後從Java代碼形成相同的命令。