java - 无法从 AWS Lambda 连接到 AWS RDS MySql DB。ClassNotFoundException:com.mysql.jdbc
问题描述
我正在使用 maven 项目并在 pom.xml 文件中添加了 mysql 连接器依赖项,因此我能够正确访问 RDS MySql db。但是,当我将 maven 构建 jar 部署到 AWS Lambda 并尝试使用 API Gateway 调用调用该函数时,它在 cloudwatch 中显示以下错误。
*Error :*
com.mysql.jdbc.Driver: java.lang.ClassNotFoundException
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.project.Apigateway.App.handleRequest(App.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
我不明白为什么在我将项目 jar 部署到 AWS Lambda 时依赖关系没有解决。请帮我提出您宝贵的建议。
public Connection makeJDBCConnection() throws ClassNotFoundException {
try {
Class.forName("com.mysql.jdbc.Driver");
String userName = "*****";
String password = "*****";
String dbName = "user";
String jdbcUrl = "jdbc:mysql://savetemp.cga2ptefm4rq.ap-south-1.rds.amazonaws.com:3306/" + dbName + "?user="
+ userName + "&password=" + password;
crunchifyConn = DriverManager.getConnection(jdbcUrl);
if (crunchifyConn != null) {
connected = true;
}
} catch (Exception ex) {
System.out.println("MySQL Connection Failed!" + ex);
}
return crunchifyConn;
}
解决方案
确保您已安装此软件包。
推荐阅读
- uima - 这个错误在基于 UIMA Ruta 的项目中意味着什么?
- spring - Spring Cloud Gateway 静态文件
- php - 以逗号字符拆分字符串,但如果所述字符嵌套在括号内,则忽略
- python - JSON 上传到 BigQuery
- reactjs - 为什么我的数字输入框只有在第一次输入时仍然显示字母或符号?(反应)
- python - 打开图像文件时如何修复输入/输出错误
- marklogic - MarkLogic TDE:无法获取多个嵌套重复字段和地图上的数据
- javascript - 通过从数据库中获取信息来显示已经选中的复选框
- python - 自动编码器编码中 KMeans 的低 NMI
- python - 如何使用 python selenium 在页面上打开不同的链接进行抓取?