Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GMail api-Java.lang.VerifyError:无法从最终类继承_Java_Jakarta Ee_Glassfish_Gmail_Gmail Api - Fatal编程技术网

Java GMail api-Java.lang.VerifyError:无法从最终类继承

Java GMail api-Java.lang.VerifyError:无法从最终类继承,java,jakarta-ee,glassfish,gmail,gmail-api,Java,Jakarta Ee,Glassfish,Gmail,Gmail Api,我正在使用glassfish服务器4.1和JavaJDK1.8。我使用maven来构建和部署 我制作了一个表单,触发控制器使用gmail api发送电子邮件 触发控制器的表单: <form method="post" action=GmailController> <td>Test API gmail</td> <td><input name="email" value="${requestScope.get(

我正在使用glassfish服务器4.1和JavaJDK1.8。我使用maven来构建和部署

我制作了一个表单,触发控制器使用gmail api发送电子邮件

触发控制器的表单:

<form method="post" action=GmailController>
        <td>Test API gmail</td>
        <td><input name="email" value="${requestScope.get("email")}" /></td>
        <td><input type="submit" value="Send email" /></td>
</form>
@WebServlet("/GmailController")
public class GmailController extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String email = request.getParameter("email");

    try {
        sendAnEmail("email_body", email, email); //custom method that uses gmail API
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public static void sendAnEmail(String body, String from, String to) throws Exception {
    Gmail service = getGmailService();
    MimeMessage msg = createEmail(to, from, "Area", body);
    sendMessage(service, "email@example.com", msg);
}

调用GMail API函数的sendAnEmail方法:

<form method="post" action=GmailController>
        <td>Test API gmail</td>
        <td><input name="email" value="${requestScope.get("email")}" /></td>
        <td><input type="submit" value="Send email" /></td>
</form>
@WebServlet("/GmailController")
public class GmailController extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String email = request.getParameter("email");

    try {
        sendAnEmail("email_body", email, email); //custom method that uses gmail API
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public static void sendAnEmail(String body, String from, String to) throws Exception {
    Gmail service = getGmailService();
    MimeMessage msg = createEmail(to, from, "Area", body);
    sendMessage(service, "email@example.com", msg);
}

提交触发控制器的表单时,会出现HTTP 500错误,glassfish显示:

java.lang.VerifyError:无法从最终类继承

当我在java glassfish web应用程序之外测试GMail API时,它通过在java main中调用
sendAnEmail
正常工作

我不明白是什么导致了这个错误,因为我的类除了从
HttpServlet
继承之外,没有从任何其他类继承

当我注释
sendAnEmail()
调用时,没有错误,因此该错误一定不是由于
HttpServlet
继承引起的

是什么导致了这个错误? 如何调试或获取有关它的更多信息

在server.log中,我没有得到更多信息,它显示了相同的错误并告诉线程已经停止

经过一些测试,另一台计算机和操作系统上完全相同的代码给出:

java.lang.NoSuchMethodError:com.google.api.client.util.ClassInfo.getFieldInfos()Ljava/util/Collection

相反


google-api-services-oauth2、google api services gmail和google api client都是1.23.0版。

错误:
java.lang.VerifyError:无法从最终类继承

基于此,您已成功创建了一个扩展超类的类,其中超类已声明为
final

最可能的原因是构建类路径和启动类路径之间存在冲突。换句话说,您是针对一个非
final
的超类版本编译子类,然后针对一个
final
的版本运行。验证者(正确地)说这是错误的


错误:
java.lang.NoSuchMethodError:com.google.api.client.util.ClassInfo.getFieldInfos()Ljava/util/Collection

基于此,您的代码正在(间接)调用一个不存在的方法。检查您在类路径中使用的依赖项


希望这有帮助

错误:
java.lang.VerifyError:无法从最终类继承

基于此,您已成功创建了一个扩展超类的类,其中超类已声明为
final

最可能的原因是构建类路径和启动类路径之间存在冲突。换句话说,您是针对一个非
final
的超类版本编译子类,然后针对一个
final
的版本运行。验证者(正确地)说这是错误的


错误:
java.lang.NoSuchMethodError:com.google.api.client.util.ClassInfo.getFieldInfos()Ljava/util/Collection

基于此,您的代码正在(间接)调用一个不存在的方法。检查您在类路径中使用的依赖项

希望这有帮助