我正在制作一个用于编译和执行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());
}
%>
答案 0 :(得分:0)
我可以(部分)重现。您尝试使用以下命令开始执行您的课程:
java Example
仅当您的环境变量CLASSPATH包含.
或不存在时,这才是正确的。当您从JSP启动批处理文件时,它不应该。
因此,您必须使用<:p>强制类路径到.
java -cp . Example