我在TomEE Plus 7.1.0中部署了EJB应用程序(以stacktrace
文件形式提供)。
运行正常,但注意到没有发送电子邮件。
我调查了.war
处的日志文件,发现了这一点:
java.lang.LinkageError:违反加载程序约束:加载程序(实例 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"),据说解决方案在于将对logs/tomee-stderr.[date].log
的依赖项标记为“提供的”依赖项,但我的理解是应该在Maven项目文件中完成此操作,而我没有访问权限。
我可以随意编辑ROOT目录的内容(并且我尝试从javamail
目录中删除两个文件,即mail.jar
和mail-1.4.4.jar
,但无济于事) ;我相信我也可以使用7-zip编辑.war文件;最后,我可以修改服务器中的任何配置。但是我不能编辑应用程序的源代码和/或重新编译它。
(作为潜在的相关信息,我确实具有对源代码的读取访问权限,并且似乎没有使用Maven-WEB-INF/lib
文件的存在表明它是一个Eclipse项目。)
名为.project
的文件是TomEE的一部分,位于geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar
文件夹中。
鉴于我的限制(没有行家,没有编译-现有的WAR文件必须正常工作),如何解决此错误?
[编辑1]
我从WAR文件(带有7-zip)中删除了lib
和mail.jar
并重新部署,重置了日志文件,但错误仍然相同。
我尝试从TomEE的mail-1.4.4.jar
文件夹中删除geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar
,但是TomEE无法启动。
答案 0 :(得分:0)
似乎仍然有一个包含javax.mail.Session类的jar文件?请将所有WEB-INF / lib提取到一个文件夹中,并在其中包含字符串“ javax / mail / Session”的情况下搜索所有jar文件的内容