Java 验证构建Liferay 7.0 OSGI模块时出错

Java 验证构建Liferay 7.0 OSGI模块时出错,java,liferay,verifyerror,Java,Liferay,Verifyerror,我已经研究这个错误好几天了。虽然我尝试了几种不同的方法,但在Liferay论坛上还没有回应,我无法找出错误的真正原因。如果我能找到原因,我可能会解决它。错误是: 原因:java.lang.VerifyError:操作数堆栈上的类型错误\u异常详细信息:\u 地点:u org/bsfinternational/api/core/service/impl/EmailLocalServiceImpl.sendEmail(Ljava/lang/String;Ljava/lang/String;Ljava

我已经研究这个错误好几天了。虽然我尝试了几种不同的方法,但在Liferay论坛上还没有回应,我无法找出错误的真正原因。如果我能找到原因,我可能会解决它。错误是:

原因:java.lang.VerifyError:操作数堆栈上的类型错误\u异常详细信息:\u 地点:u
org/bsfinternational/api/core/service/impl/EmailLocalServiceImpl.sendEmail(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V@930:invokevirtual\u

原因:uu键入'com/sun/mail/smtp/SMTPMessage'(当前帧,堆栈[1])不可分配给'javax/mail/Message'\uu

当前帧:bci:@930_uuflags:{}locals:{'org/bsfinternational/api/core/service/impl/EmailLocalServiceImpl','java/lang/String','java/lang/String','java/lang/String','java/lang/String','java/lang/String','java/lang/String',integer','javax/mail/Session','org/apache commons/validator/routines/EmailValidator','de/agitos/dkim/DKIMSigner','java/lang/String','java/lang/String、java/lang/String、com/sun/mail/smtp/SMTPMessage、integer、java/lang/String、org/bsfinternational/api/core/model/Email、“[Ljavax/mail/internet/InternetAddress;”、'java/lang/String'、'Ljava/lang/String;'、'java/util/List'、'[Ljavax/mail/internet/InternetAddress;','java/lang/String','java/lang/String','java/lang/String','java/lang/String',integer','javax/mail/Transport'}堆栈:{'javax/mail/Transport','com/sun/mail/smtp/SMTPMessage','Ljavax/mail/Address;'}_

所以,我发现SMTPMessage不可分配给消息存在一个问题,但我不知道为什么。我所做的研究似乎指出了JVM的不同之处,但据我所知,所有内容都是在相同的环境中编译的

实际的代码片段是:

    // construct the JavaMail message using the DKIM message type from DKIM for JavaMail
        SMTPMessage msg = new SMTPDKIMMessage(session, dkimSigner);
如果我尝试将SMTPDKIMMessage分配给代码中的相同类型,如下所示:

// construct the JavaMail message using the DKIM message type from DKIM for JavaMail
        SMTPDKIMMessage msg = new SMTPDKIMMessage(session, dkimSigner);
然后,顺应性是SMTPDKimessage不可分配给消息。如果我将其更改为消息,则它会抱怨SMTPDKimessage不可分配。看起来像一个圆圈


因此,这里的第一个问题是:真正的原因是什么?我应该寻找什么来生成错误?我使用相同的IDE和编译环境编译了DKIMforJavaMail.jar。但是有人对这些赋值不满意。这是什么?

这里的大问题是:如何构建,以及在t上是否有重复的类你是否将javax.mail类捆绑在插件的某个地方

通常,如果一个类不是合法超类的有效子类,则该超类将有两种不同的版本。这就是为什么错误消息没有立即意义,因为它只包含名称,而不包含实际类实例之间的差异


检查你的插件-它使用哪些类(或它依赖的JAR)包含?它依赖于哪一个-您提到Liferay 7,因此很可能有多个版本的底层API可用,从而导致此类问题。

我继续采用不同的方法,但我没有取得多大进展。是的,堆栈中的某个地方存在问题。我只使用JavaMail创建和发送电子邮件来自我的portlet的邮件。是的,我知道Liferay有一个JavaMail的实现,但它不支持DKIM。我正在移植6.0.6中的所有代码,这是我唯一无法解析的代码。据我所知,Tomcat home/lib/ext文件夹中的mail.jar是我所需要的,并且缺少任何其他方法,我将它复制到了我的mod中ule的lib文件夹,并将其与我的其他非maven JAR一起包含。我已经注释掉了我的DKIM代码,只是尝试让一个普通、简单的Javamail发送例程正常工作…但运气不好…还没有。仍在尝试