在tomcat用main执行代码
public static void main(String[] args) throws Exception {
compile();
}
private synchronized static File compile() throws Exception {
String[] args = new String[] { "-d", System.getProperty("user.dir") ,
System.getProperty("user.dir") + "\Model2007082016080001.java"};
System.out.println(System.getProperty("user.dir"));
int status = javac.compile(args);
System.out.println(status);
return null;
}
用上面的代码编译已经存在的java代码,java 代码用到的类包已经导进了工程,从main入口进入可以成功编译指定的java代码。
但是在tomcat下执行servelet,执行compile()方法,就会编译失败,报错:
D:\Administrator\workspace\a\Model2007082016080001.java:3: 找不到符号
符号: 类 AbstractPackedModel
位置: 软件包 com.tool.servelet
import com.tool.servelet.AbstractPackedModel;
不知道什么原因
问题补充
System.getProperty("user.dir") 执行main函数的时候他的值是当前的工程目录,但是在执行servelet是他的值是tomcat下的bin目录,我用System.setProperty ("user.dir", "D:\Administrator\workspace\a");它改成工程目录,运行还是报错。请大家帮忙!
问题补充
我把类 AbstractPackedModel类所在的包路径放到classpath中,还是不行
再看一次报错信息:
Source: D:\Administrator\workspace\a\Model2007082016080001.java
Message: D:\Administrator\workspace\a\Model2007082016080001.java:3: 找不到符号
符号: 类 AbstractPackedModel
位置: 软件包 com.tool.servelet
Code: compiler.err.cant.resolve
Kind: ERROR
Position: 146
Start Position: 146
End Position: 165
Source: D:\Administrator\workspace\a\Model2007082016080001.java
Message: D:\Administrator\workspace\a\Model2007082016080001.java:5: 找不到符号
符号: 类 AbstractPackedModel
com.tool.servelet.Model2007082016080001
根据报错信息,我认为是已经找到包了,但就是不能识别包里面的类,各位帮看看是不是这个问题
问题补充
D:\Administrator\workspace\a\Model2007082016080001.java:3: 找不到符号
符号: 类 AbstractPackedModel
位置: 软件包 com.tool.servelet
import com.tool.servelet.AbstractPackedModel;
可以知道在编译时,缺少环境变量,你加上-cp指定lib目录 试试
具体应该怎么加,我的开发平台是myeclipse
问题补充:
各位朋友帮帮忙,我已经搞了四天了,这个问题还没有解决,影响项目进度了。不管对不对,提提建议,谢谢!
问题补充:
回答 qpzmal :不太懂log当中的"找不到符号"是指什么(找不到符号是指找不到类,但是能找到这个类所在的包);现在已经能正确取得你的工程目录地址了么?(我把地址给写死了,如果用方法System.getProperty("user.dir")取,从main函数进去执行方法,取的路径是工程的路径,但是从servelet进去取的路径是tomcat下的bin路径);把Model2007082016080001这个类改成最简单的helloworld,看能不能编译(还不能编译),谢谢qpzmal