java.lang.ClassCastException : javax. mail.Session 无法转换为 javax.mail.Session

标签 java tomcat

我在尝试运行以下代码以使用 tomcat 上下文文件获取 javax.mail.Session 对象时收到此错误。

        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        Session session = (javax.mail.Session) envCtx.lookup("mail/session");

这是context.xml中的资源声明。

  <Resource name="mail/Session" auth="Container"
        type="javax.mail.Session"
        mail.smtp.host="host"
        mail.smtp.user="user"
        mail.smtp.password="password"
        mail.smtp.auth="false"/>

我知道这可能是因为我的应用程序服务器库 (tomcat) 文件夹和我的应用程序库文件夹中有相同的 javax.mail.Session 库,我已经从我的应用程序库中删除了尽可能多的重复库文件我可以看到的文件夹(例如 mail.jar)将 javax.mail.Session 作为库的一部分,现在我仍然遇到此错误并且不确定其他哪些库可能是此错误的来源问题,还是我不知道的其他问题?

人们会建议我做什么来找到这个问题的根源?

谢谢。

最佳答案

这个问题发生在服务器上,因为Tomcat的lib和你的应用程序都有自己的mail.jar副本(在WEB-INF/lib中),所以类加载器可以加载两个不同的Session .如果您从您的应用程序中删除mail.jar,这个问题就会得到解决。

关于java.lang.ClassCastException : javax. mail.Session 无法转换为 javax.mail.Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185297/

相关文章:

java - 添加了对调用 Javascript 函数到小程序的支持,现在从 Tomcat 获取 404 No Context

java - ArrayList方法返回

Java json解析异常

java - JLabel Icon 未使用 setIcon (或其他冗余)更新

java - 使用javaFx TableView 显示选定行的内容

tomcat - IntelliJ IDEA : Run Batch script before and after Run/Debug Configuration

tomcat - 如何在运行时在 servlet 和 tomcat 中添加子域?

java - 如果退出 Activity 打开显示可见,如何在回收器 View 上保持不可见按钮

eclipse - 无法在 META-INF 目录中找到 XML 文件

spring - Spring 3.1 MVC 应用程序上的 HTTP 状态 404