java - 尝试使用 jdbc URL 连接到远程 IP 时 MySQL 8 上的 javax.naming.NoInitialContextException
问题描述
我在 Eclipse 中开发了一个 Java 程序,并在 Eclipse 中将它作为 Java 应用程序运行。
该程序连接到位于两个不同远程服务器上的 MySQL 数据库,假设 IP 地址为 IP1 和 IP2。
IP 1 使用 MySQL 5.7,IP2 使用 MySQL 8。
在我的开发机器上运行 Eclipse 中的程序时,它运行良好,因为我已将 Eclipse 配置为使用 MySQL 8 Connector/J,它也支持 MySQL 5.7。
然后我使用 Eclipse 将这个程序导出为一个可运行的 JAR 文件,在这里我选择“将所需的库打包到 JAR 文件中”以确保嵌入 MySQL 8 的 Connector/J,然后我将这个 JAR 文件传输到具有 IP1 的服务器上。
当我运行 JAR 文件时,它可以很好地连接到 IP1 上的 MySQL Server 5.7 数据库,但无法连接到 IP2 上的任何 MySQL Server 8 数据库,并显示以下错误消息:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
我不得不提到这个程序运行良好,直到我在 IP2 上从 MySQL 5.7 升级到 MySQL 8。
任何建议表示赞赏。
解决方案
推荐阅读
- google-data-studio - Filter record based on most recent record for Each ID in Google Data Studio
- mysql - How to add missing trailing slash on all links (WPCLI or MySQL)
- c# - Run Visual Studio project in VS Code
- python - Byte slicing using brackets for unpack
- axios - axios retry on error code response with delay
- python - GraphView边缘过滤器与顶点过滤后的原始Graph相同
- angular8 - Angular 8 : No provider for HttpClient in service
- javascript - How to get back all the data after alert box?
- php - 带有条件的 PHP SQL SUM 列
- jquery - 尝试使用 Jquery 在单击时获取孩子的父数据 ID