已部署Azure无服务器函数无法识别Function外类故障排查
Azure Java Serverless Function 部署后类缺失报错问题
问题基础信息
- 开发环境:Eclipse
- 项目类型:Azure Serverless Function
- 本地运行状态:可正常运行,本地启动操作路径:
Run As/Maven/Set Goals=test - 部署后运行状态:执行失败,抛出错误日志如下:
[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项目代码结构:

- 云端部署文件结构:已通过WinSCP工具搭配发布配置文件凭据核查,确认所有项目文件均已上传成功,部署结构如下:

诉求
已知将所有代码合并写入Function.java可临时规避该问题,但需要符合开发规范的根治方案。
补充说明:此前在Visual Studio Code中进行同类开发时也遇到了完全相同的问题。
已尝试的无效排查方案
- 将运行时从Java 8切换为Java 11(同步修改
pom.xml文件对应配置),并尝试配置不同版本的FUNCTIONS_EXTENSION_VERSION - 确认
artifactID与functionAppName不重名,且二者均为小写格式 - 尝试调整
pom.xml中javax.servlet的依赖版本
内容的提问来源于stack exchange,提问作者gordon613
相关产品推荐
相关产品推荐

