Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class org.apache.jasper.jaspereException:无法为JSP编译类_Class_Jsp_Exception_Tomcat_Compilation - Fatal编程技术网

Class org.apache.jasper.jaspereException:无法为JSP编译类

Class org.apache.jasper.jaspereException:无法为JSP编译类,class,jsp,exception,tomcat,compilation,Class,Jsp,Exception,Tomcat,Compilation,我不熟悉使用库,但我需要能够向忘记密码的用户发送电子邮件。我正在尝试使用JavaMail和ApacheCommons电子邮件来实现这一点。然而,我想我一定是错误地导入了这些库 当我尝试发送电子邮件时,我收到以下消息: Apr 17, 2011 11:54:33 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet jsp threw exception org.a

我不熟悉使用库,但我需要能够向忘记密码的用户发送电子邮件。我正在尝试使用JavaMail和ApacheCommons电子邮件来实现这一点。然而,我想我一定是错误地导入了这些库

当我尝试发送电子邮件时,我收到以下消息:

Apr 17, 2011 11:54:33 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 60 in the jsp file: /sendpw.jsp
The type javax.mail.Authenticator cannot be resolved. It is indirectly referenced from required .class files
守则:

57:                 EmailAuthentication ea = new EmailAuthentication();
58:                 String authUser = ea.getUser();
59:                 String authPw = ea.getPw();
60:                 email.setAuthenticator(new DefaultAuthenticator(authUser, authPw));
61:                 email.setTLS(true);
62:                 email.setFrom(authUser+"@gmail.com");
63:                 email.setSubject("Your Last Love Password");
堆栈跟踪:

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:662)
我试过几件事:

  • 将包含所有.java文件的org.apache.commons.mail文件夹复制到我的netbeans项目的源文件中,然后将javamail库添加到项目中。这是第一次成功,我成功地发送了几封电子邮件,但后来它停止了工作(可能是因为我清理并建造了这个项目),我收到了上面的信息

  • 在commons-email-1.2的bin版本中使用jar文件创建了一个新库,就像我在javamail中所做的那样,并将其添加到项目中。这一个似乎不起作用,因为当我打开defaultauthenticator.java时,它无法导入javax.mail.Authenticator,尽管我已将这两个库添加到同一个netbeans项目中

  • 从javamail中将mail.jar和所有其他.jar(dsn.jar、imap.jar、pop3.jar等)添加到与apache common-email-1.2相同的库中,这意味着2个类路径文件(mail.jar和commons-email-1.2.jar)和6个源文件。这一次,defaultauthenticator.java中没有错误,但仍然无法发送任何电子邮件(与上面相同的服务器错误)

  • 涉及的部分代码是:

               HtmlEmail email = new HtmlEmail();
    
                email.setHostName("smtp.gmail.com");
    
                email.setSmtpPort(587);
    
                ......
    
                email.setAuthenticator(new DefaultAuthenticator(authUser, authPw));
    
                email.setTLS(true);
    
                email.setFrom(authUser+"@gmail.com");
    
                email.setSubject("Your Password");
    

    我使用的是Netbeans 6.9.1、tomcat 6.0.26


    我做错了什么?

    您需要
    mail.jar
    -以及
    activation.jar
    -库,以便从web应用程序中访问它们,因此它们应该是

    • 在tomcat6/lib中,或
    • 在yourwebapp/WEB-INF/lib中

    文件夹。

    如果有人在使用Maven Project时遇到此错误,请从
    Pom.xml
    中删除jasper属性和依赖项,谢谢!当我将mail.jar和activation.jar放入tomcat6/lib中时,它工作了。我还没有意识到我需要这么做(因为我使用的是JDK1.6,所以我不需要对activation.jar做任何事情)。但当我把它们都放进我创建的WEB-INF/lib文件夹时,它就不起作用了(我先尝试了你的第二个选项)。希望它从现在起继续平稳运行:)