通过Runtime Class创建进程时cmd中的执行错误

时间:2015-03-25 15:08:23

标签: java jsp batch-file

我正在制作一个用于编译和执行java代码的Web应用程序。我使用JSP和apache服务器,我在服务器端创建了一个包含javac和java命令的批处理文件,当我使用Runtime类运行它时,代码编译成功,但在下一阶段我得到一个错误

Error: Could not load or find main class Example

示例是类名

而且,当我手动运行批处理文件时,它可以工作。

我在JSP中使用的代码是:

       <%
   Runtime rt=Runtime.getRuntime();
// RuntimeExec rte=new RuntimeExec();
   Process pr;
   try
   {
     pr=rt.exec("cmd.exe /c start "+bfile);
     pr.waitFor();

   }
   catch(IOException ex)
   {
     System.out.println(ex.getMessage());
   }
   %>

这里bfile是“user.home”中的批处理文件。

Example类如下:

import java.io.*;
import java.util.*;
class Example
 {
   public static void main(String[]args)
   {
    System.out.println("Hello World Testing");
   }
 }

bfile是:

<%
    File bfile = null;
   try{
   //flname = request.getParameter("filename");
   bfile=new File(homeDir+"/"+request.getParameter("filename")+".bat");
   FileOutputStream fos=new FileOutputStream(bfile);
   DataOutputStream dos=new DataOutputStream(fos);
   dos.writeBytes("C:"+"\n");
   dos.writeBytes("cd\\"+"\n");
   dos.writeBytes("cd "+fl.getParent()+" \n");
   dos.writeBytes("javac "+filename+"\n");
   dos.writeBytes("java "+request.getParameter("filename")+"\n");
   dos.writeBytes("pause \n");
   dos.writeBytes("exit \n");
   dos.close();
   fos.close();
    }
    catch(IOException ioe)
    {
        System.out.println(ioe.getMessage());
    }
   %>

1 个答案:

答案 0 :(得分:0)

我可以(部分)重现。您尝试使用以下命令开始执行您的课程:

java Example

仅当您的环境变量CLASSPATH包含.或不存在时,这才是正确的。当您从JSP启动批处理文件时,它不应该。

因此,您必须使用<:p>强制类路径到.

java -cp . Example