2012-09-15 76 views
0
public void actionPerformed(ActionEvent e) 
    { 
     String sout; 
     try 
      {   
      if(e.getSource()==compile) 
      { 
      sout=input.getText(); 
      Runtime rt=Runtime.getRuntime();        
Process p=rt.exec("javac sout.java",null,new  File("C:/c/compile assign")); 
      }   

我在String sout(通過TextField)中存儲類名,然後調用sout.java(即classname.java),但無法構建類文件。無法通過運行時編譯生成.class文件

  if(e.getSource()==run) 
      { 
InputStream is = Runtime.getRuntime().exec("java input.getText()",null,new    File("C:/c/compile assign")).getInputStream(); 
      //BufferedInputStream b=new BufferedInputStream(is); 
     BufferedReader br= new BufferedReader(new InputStreamReader(is));  
      output.setText(br.readLine()+"hello"); 
      } 
     } 
     catch(Exception e1) 
     { 
     e1.printStackTrace(); 
     } 
    } 
+0

對'exec'或更好的'ProcessBuilder'的命令最好保存在'String []'中。請務必訪問['exec' info鏈接的Java World文章。頁面(http://stackoverflow.com/tags/runtime.exec/info)。實施所有建議。 –

回答

1

如果你保持在類名的字符串sout作爲input文本框然後提供你的輸出編譯命令應該是:

Process p=rt.exec("javac " + sout + ".java", null, new File("C:/c/compile assign")); 

而且你運行命令應該是:

Runtime.getRuntime().exec("java " + input.getText(), null, new File("C:/c/compile assign")).getInputStream(); 

在啓動之前,您可能希望在使用此字段的原始值(例如類存在)之前添加進一步的驗證命令。

相關問題