本人在myeclipse中写了个发邮件程序测试能正常发送,但因为想把它放在在linux环境下用perl调用java命令的方式调用,试了n多方法,还是报错。 报错原因找不到javax.mail.Authenticator包,但是反编译mail.jar里却是存在,没办法了,诚请高手解答?
E:\wangming\workspace\test\lib>javac -classpath ./mail.jar Email4.java
E:\wangming\workspace\test\lib>java  Email4  // 此处试过多种执行都报此错(java -classpath ./mail.jar Email4)
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Authenticator
Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)E:\wangming\workspace\test\lib>

解决方案 »

  1.   

    你javac 编译的时候要制定classpath ,在java执行的时候却没有classpath,那么就不会将mail.jar 放在执行的环境变量当中
    改成 java -classpath ./mail.jar Email4
    这样就不会报上面所说的错误了
      

  2.   

    myeclipse里面默认是存在mail.jar 的,你是不是自己又重新在lib里面有导入了包。可能造成这2个包之间的冲突,两者应该是删除一个。   myeclipse自带的mail.jar 在myeclipse的系统库里面 也就是j2ee library 里面的javaee.jar包里面 有一个mail文件    该文件和我们在做邮件发送导入的javaee.jar是冲突的  只能选 一个