【问题标题】:JSP: Session cannot be resolved to a typeJSP:会话无法解析为类型
【发布时间】:2011-10-08 13:30:41
【问题描述】:

我已经接管了一些旧的遗留 JSP 代码,并希望为其添加一些邮件支持。好吧,它并没有那么顺利,因为我得到了错误,例如:

Session cannot be resolved to a type

An error occurred at line: 39 in the jsp file: /xxxxx/test.jsp
Message cannot be resolved to a type
MimeMessage cannot be resolved to a type

代码,样本在某处取走(不漂亮...):

<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>

<%@ page session="true"%>
<html>
<head>
<title>JSP JavaMail Example </title>
</head>
<body>
<%
String to = "sssssss@gmail.com";
String from = "admin@yyyyyy.com";
String subject = "subject";
String messageText = "body";

Properties props = System.getProperties();
//props.put("mail.host", host);
//props.put("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);

Transport.send(msg);
%>
</body>
</html>

谷歌搜索表明实际的邮件 jar 可能丢失,所以我下载了 javamail,提取了 jar 并将它们放入 tomcat WEB-INF 目录中。没有变化。

这是一个带有 CentO(5.5?)的 rackhostcloud 设置。这是由旧团队配置的(早已不复存在)。可以肯定地说,我不会被称为最好的 Linux 管理员,但基本的命令行内容是没有问题的。我可以运行yum 就好了,但我认为此时还有更多内容。也许是一些 Java 配置?

我只想发个简单的邮件……

任何建议,非常感谢。

【问题讨论】:

    标签: java email jsp session tomcat


    【解决方案1】:

    邮件罐子需要放在 WEB-INF/lib 中,而不是放在 WEB-INF 中。您需要重新启动应用程序或整个 tomcat 服务器才能使其生效。

    根据您的描述,我猜您正在使用 $TOMCAT_HOME/webapps/ 中的一个展开的 webapp 目录。首先要注意的是:如果目录旁边有一个 .war,那么战争就是“真相的来源”。一场战争是一个网络档案。它基本上是一个包含整个 webapp 目录的 zip 文件,并且 Tomcat 出于性能目的提取该目录。这对您意味着,无论您对目录做什么,如果该 war 文件的时间戳以某种方式更新,它将清除您对目录所做的所有更改,并再次将其替换为 war 的内容。

    在此之后,为了使用邮件类,您只需要一个文件结构,如下所示:

    $TOMCAT_HOME
        bin
        conf
        lib
        ...
        webapps
            <your app>
                test.jsp (Can be in any directory under <your app> except WEB-INF)
                WEB-INF
                    lib
                        mail.jar
                        activation.jar
    

    【讨论】:

    • 其实我的编辑错误,原来是把jar放在WEB-INF/lib目录下。重新启动(实际上,整个服务器有点无意......哎呀!)但之后仍然没有效果。我想我已经很接近了,只是做了一些有点傻的事情
    • @Jahmic:在我的回答中添加了一些注释。比较你所拥有的,看看你是否注意到了什么。
    【解决方案2】:

    我遇到了同样的问题。这不是你的错,而是Tomcat的。在 Tomcat6 上,如果将 mail.jar 放在 WEB-INF/lib 文件夹中,就像对任何其他 jar 所做的那样,它将无法正常工作。您必须将mail.jar 放在公共lib 文件夹(/usr/share/tomcat6/lib)中,去掉WEB-INF/lib 文件夹中的mail.jar,重新启动Tomcat6,它就会开始工作。你也不需要tomcat6的激活jar。

    其他应用服务器可能会在 WEB-INF/lib 中的 mail.jar 中正常工作,或者更有可能已经内置了自己的邮件库。使用 Tomcat6,您必须执行上述操作。

    【讨论】:

    • 知道为什么这可能是 Tomcat6 的问题吗?
    【解决方案3】:

    将此代码移至 Servlet,让您的 IDE 指南组织您的导入并建议如何解决您的编译问题。此代码在 .jsp 中没有位置

    然后当然要仔细检查WEB-INF/lib 是否包含所有必需的罐子。

    【讨论】:

      猜你喜欢
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 2012-09-12
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2016-08-13
      相关资源
      最近更新 更多