gpt4 book ai didi

java - 部署的 Azure 无服务器函数看不到函数之外的类

转载 作者:行者123 更新时间:2023-12-03 00:19:16 24 4
gpt4 key购买 nike

我在 Eclipse 中开发了 Azure 无服务器函数。该函数在本地运行(运行方式/Maven/设置目标=测试),但部署后不起作用。它失败并出现以下错误

[Error] Executed 'Functions.HttpExample' (Failed, Id=0de9ae96-68c6-4620-ba05-63a1c1c99b97, 
Duration=24ms)
Result: FailureException: NoClassDefFoundError:
javax/servlet/http/HttpServletStack: java.lang.reflect.InvocationTargetExceptionat
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at

通过查看代码,我可以看到它在以下行失败。

boolean tokenVerified = RecaptchaVerification.verifyRecaptchaSite(token);

这是代码中引用不在 Function.java 中的类的第一行

这是Eclipse中代码的结构

enter image description here

我已使用 WinSCP 和发布配置文件凭据来检查已部署的内容。

一切都在那里

enter image description here

有人知道如何解决这个问题吗?我可以将所有代码放入 Function.java 中,这样就可以了,但我更愿意正确解决这个问题。 (顺便说一下,我在 Visual Studio Code 中进行开发时也遇到了同样的问题)

更新:我也尝试了以下方法 - 但没有成功。

  1. 我尝试在 Java 11 而不是 Java 8 上运行(对 pom.xml 文件进行适当更改),并尝试不同版本的 FUNCTIONS_EXTENSION_VERSION
  2. 我确保 artifactIDfunctionAppName 不同,并且两者均为小写。
  3. 我尝试更新 pom.xml 中的 javax.servlet 版本

最佳答案

我假设由于第一次function.java之外的类的调用失败,所有其他调用也会失败。然而,这个问题是 RecaptchaVerification.java 所特有的。

我尝试调用的类如下所示。

public class RecaptchaVerification extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String SECRET_PARAM = "xxx";
private static final String RESPONSE_PARAM = "xxxx";

如果我删除了 extends HttpServlet 那么一切都会正常。请注意,我不知道为什么这可以解决问题 - 我认为我不应该从 NoClassDefFoundError 的错误消息中知道这一点。

(回想起来,我应该在我的问题中将代码发布到 RecaptchaVerification.java )

关于java - 部署的 Azure 无服务器函数看不到函数之外的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72901844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com