日期:2014-05-17  浏览次数:20684 次

在linux tomcat执行process的问题
本帖最后由 symakai 于 2014-01-07 12:45:56 编辑
在做一个项目,用户通过网页端上传java代码,然后在服务器端进行编译执行,执行时代码是这样写的(其中Main是用户提交的java文件经过编译后生成的):

ProcessBuilder pb=new ProcessBuilder("java","Main","A","3","4","5");
pb.directory(new File("/usr/local/tomcat/apache-tomcat-7.0.39/webapps/oops/Oops/33/test_all_mid_5361d7f8-2766-4672-9941-b106ec400685/Answer/1120120745/Tarantula/project/src"));
Process process=pb.start();

经测试,这段代码在windows下可用,在linux下直接运行也可用,但是放到tomcat里通过服务器调用执行时就报如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Main
this is getErrorStream:
Caused by: java.lang.ClassNotFoundException: Main
this is getErrorStream:
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
this is getErrorStream:
        at java.security.AccessController.doPrivileged(Native Method)
this is getErrorStream:
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
this is getErrorStream:
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
this is getErrorStream:
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
this is getErrorStream:
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
this is getErrorStream:
Could not find the main class: Main.  Program will exit.

不知是否是tomcat的问题,已经困扰我很多天了,跪求大神解答。

------解决方案--------------------
编译过后,src目录是不存在的。
------解决方案--------------------
到哪个目录看看是否存在这个Main.class就一目了然了。