2011-07-19 112 views
0

我接管了一些舊的舊JSP代碼,並希望爲其添加一些郵件支持。那麼,它並沒有那麼好走,因爲我得到的錯誤,如: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 = "[email protected]"; 
String from = "[email protected]"; 
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> 

谷歌搜索表明實際的郵件罐可能會丟失,所以我下載javamail,解壓縮jar並將它們放到tomcat的WEB-INF目錄中。沒有改變。

這是一個與CentOs(5.5?)的rackhostcloud設置。這是由老隊伍配置的(很久以前)。可以說,我不會被稱爲最好的Linux管理員,但基本的命令行東西是沒有問題的。我可以運行yum就好了,但我認爲在這一點上還有更多。也許一些Java配置?

我只是想發送一個簡單的郵件...

任何建議,大加讚賞。

回答

5

郵件罐需要進入WEB-INF/lib而不是WEB-INF。您需要重新啓動應用程序或整個Tomcat服務器才能生效。

從您的描述中,我猜你正在使用在$ TOMCAT_HOME/webapps /上找到的分解的webapp目錄。首先要注意的是:如果目錄旁邊有一個.war,那麼戰爭就是「真相之源」。一場戰爭是一個Web檔案。它基本上是一個包含整個webapp目錄的zip文件,Tomcat爲了性能目的提取該目錄。這也就意味着你的是,不管你做什麼的目錄,如果那場戰爭文件的時間戳被莫名其妙地更新,它會吹走你的目錄所做的所有更改,並隨着戰爭的再次內容替換它。

現在在這之後,你應該需要才能使用郵件類是像文件結構:

$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 
+0

其實,我的編輯錯誤,最初把罐子的WEB-INF/lib目錄下。重新啓動(實際上,有點無意中,整個服務器..嗨!)但事後仍然沒有效果。我想我接近,只是做了一些有點傻 – Jahmic

+0

@Jahmic:增加了一些注意事項,以我的答案。比較你對它的看法,看看你是否注意到了什麼。 –

1

移動這個代碼到Servlet,讓你的IDE引導組織導入並建議如何修復你的編譯問題。這段代碼有一個.JSP

無處當然然後仔細檢查是否WEB-INF/lib包含所有需要的jar。

2

我有同樣的問題。這不是你的錯,而是Tomcat的。在Tomcat6上,如果將它放在WEB-INF/lib文件夾中,那麼mail.jar將無法正常工作,就像您使用任何其他jar一樣。您必須將mail.jar放在常用的lib文件夾(/ usr/share/tomcat6/lib)中,擺脫WEB-INF/lib文件夾中的mail.jar,重新啓動Tomcat6,它將開始工作。你不需要tomcat6的激活jar。

其他應用服務器可能會很好地工作在WEB-INF/lib中的mail.jar是,或者更可能已經內置了自己的郵件庫。藉助的Tomcat6,你必須做以上。

+0

任何想法爲什麼這可能是Tomcat6的問題? –

相關問題