首页 > 解决方案 > 尝试使用 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。

任何建议表示赞赏。

标签: javamysqleclipsejdbc

解决方案


推荐阅读