部署到TomEE Plus的WAR文件不发送电子邮件:加载程序约束违规错误

问题描述 投票:0回答:1

我将一个EJB应用程序(作为.war文件提供)部署到TomEE Plus 7.1.0。

它运行正常,但有人注意到没有发送电子邮件。

我调查了logs/tomee-stderr.[date].log的日志文件,发现了这个:

java.lang.LinkageError:加载器约束违规:loader(java / net / URLClassLoader的实例)先前为名为“javax / mail / Session”的其他类型启动加载

然后是非常非常长(> 500k行)的堆栈跟踪。

我找到了一个相关的问题(java.lang.LinkageError: loader constraint violation:previously initiated loading for a different type with name "javax/mail/Session"),据说解决方案在于将对javamail的依赖关系标记为“提供”依赖关系,但我的理解是这应该在Maven项目文件中完成,我不知道有权访问。

我可以随意编辑ROOT目录的内容(我尝试从mail.jar目录中删除两个文件,即mail-1.4.4.jarWEB-INF/lib,但无济于事);我相信我也可以用7-zip编辑.war文件;最后我可以修改服务器中的任何配置。但我无法编辑应用程序的源代码和/或重新编译它。

(作为可能相关的信息,我确实对源代码具有读取权限,并且它似乎没有使用Maven - .project文件的存在表明它是一个Eclipse项目。)

名为geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar的文件是TomEE的一部分,位于lib文件夹中。

鉴于我的约束(没有maven,没有编译 - 现有的WAR文件必须工作),如何解决这个错误?

[编辑1]

  • 我从WAR文件中删除了mail.jarmail-1.4.4.jar(带有7-zip)并重新部署,重置了日志文件,但错误仍然相同。
  • 我尝试从TomEE的geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar文件夹中删除lib,但是TomEE无法启动。
java javamail windows-server-2012 tomee tomee-7
1个回答
0
投票

似乎还有一个包含javax.mail.Session类的jar文件?请将所有WEB-INF / lib解压缩到一个文件夹,如果包含字符串“javax / mail / Session”,则搜索所有jar文件的内容

© www.soinside.com 2019 - 2024. All rights reserved.