我将一个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.jar
和WEB-INF/lib
,但无济于事);我相信我也可以用7-zip编辑.war文件;最后我可以修改服务器中的任何配置。但我无法编辑应用程序的源代码和/或重新编译它。
(作为可能相关的信息,我确实对源代码具有读取权限,并且它似乎没有使用Maven - .project
文件的存在表明它是一个Eclipse项目。)
名为geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar
的文件是TomEE的一部分,位于lib
文件夹中。
鉴于我的约束(没有maven,没有编译 - 现有的WAR文件必须工作),如何解决这个错误?
[编辑1]
mail.jar
和mail-1.4.4.jar
(带有7-zip)并重新部署,重置了日志文件,但错误仍然相同。geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar
文件夹中删除lib
,但是TomEE无法启动。似乎还有一个包含javax.mail.Session类的jar文件?请将所有WEB-INF / lib解压缩到一个文件夹,如果包含字符串“javax / mail / Session”,则搜索所有jar文件的内容