无法通过运行时类编译构建.class文件

时间:2012-09-15 11:52:36

标签: java runtime.exec

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),但它无法构建类文件。

            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();
        }
    }

1 个答案:

答案 0 :(得分: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();

在启动java命令之前,您可能希望在使用此字段中的原始值(例如,类存在)之前添加进一步的验证。