跪求高手帮助
本帖最后由 shejianan 于 2013-07-29 22:47:14 编辑 写了一个action用于通知各地区公司管理员即将到期的用户,之前都正常问题在于我在工程中建立了一个SendMail的工具类用于进行邮件通知,在java工程中测试该类正常,但是在action调用该类时需要new一个新的对象结果就会报错 SendMail sm=new SendMail();
报错信息为:
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.NoClassDefFoundError: javax/mail/MessagingException
com.y09.action.VdbAction.ComingCloseAction(VdbAction.java:197)
java.lang.ClassNotFoundException: javax.mail.MessagingException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
com.y09.action.VdbAction.ComingCloseAction(VdbAction.java:197)
public String ComingCloseAction(){
//全部即将到期的用户
List<VdbData> allCloseList = vdbService.selComingCloseService();
//创建一个MAP用户存放 地区公司名称与管理员邮箱的键值对
Map<String,String> unitMap =new HashMap<String,String>();
//获取全部单位及对应邮箱
List<VdbData> list = vdbService.selComingCloseService();
//删除重复的地区公司名称
for(int i=0;i<list.size()-1;i++){
for(int j=list.size()-1;j>i;j--){
if(list.get(j).getUnit().equals(list.get(i).getUnit())){
list.remove(j);
}
}
}
//单位名称集合
List<String> unitList=new ArrayList<String>();
//遍历 地区公司集合
Iterator<VdbData> it = list.iterator();
while(it.hasNext()){
VdbData vd=it.next();
String unitName=vd.getUnit();//获取公司名称
unitList.add(unitName);
String tomail=vd.getDistrictadminEmail();//获取管理员邮箱
unitMap.put(unitName, tomail);//存放键值对
}
Iterator<String> unitIt=unitList.iterator();
while(unitIt.hasNext()){
//单位名称
String unitName=unitIt.next();
String toMail=unitMap.get(unitName);
String context=null;//邮件内容
for(VdbData vd:allCloseList){
String nowUnitName=vd.getUnit();
if(nowUnitName==unitName){
context=context+vd.getClosedate()+" "+vd.getUsername()+" "+"|"+" ";
System.out.println(context);
}
}
SendMail sm=new SendMail();
//发件人、收件人、标题
sm.setAddress("vpn-400@petrochina.com.cn",toMail,unitName+"预关闭账号通知");
sm.send(context);
}
return "ComingCloseAction";
}
[解决办法]
先调好格式,再把ComingCloseAction类贴出来看看。
目测少了jar包(java.lang.ClassNotFoundException: javax.mail.MessagingException 看看这个类所在的jar包是否在服务器上有,要注意包路径和类名),看看服务器上工程下,相关的jar包可少了。