导出的可运行 Jar - 无法连接到数据库

Exported Runnable Jar - Unable to connect to database

Friends please suggest a solution

我在 Ubuntu 20.04 OS 中使用 eclipse IDE 和 MySql 数据库完成了一个 java swing maven 项目。将项目导出为 Runnable jar(启动配置作为我的主要功能 class,选择的库处理单选按钮是将所需的库提取到生成的 jar 中)。

然后是可运行的jar,我在Windows10OS打开了。双击主 window 打开,我只能从主 window 的菜单栏打开 2 windows 而这两个 window class 没有sql 连接。所有其他 windows 正在连接数据库并且无法打开。

在 widows 10 中,我安装了 MySql 服务器 8.0.22(使用传统身份验证方法保留 MySql 5.x 兼容性)和连接器 j 8.0.22,我可以访问我的数据库使用查询浏览器。

我在我的项目中使用 mysql-connector-java 8.0.22 的 Maven 依赖项。我的连接 Class 如下。`


public class MysqlConnector {
    Connection con=null;
    public static Connection dbConnector() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306","sarams", "password");
            return con;
    }
        catch (Exception e) {
            return null;
            
        }
             
        }
}     

首先确保您已安装所有驱动程序并添加到 maven

Example Using void

public class MysqlConnector {

    /**
     * Connect to a sample database
     */
    public static void connect() {
        Connection con = null;
        try {
           // db parameters, where the database is being stored, so it could access it
            String url = "jdbc:mysql://localhost:3306","sarams", "password";
           
            // create a connection to the database
            con = DriverManager.getConnection(url);
    
            System.out.println("Connection to mysql has been established.");
    
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
    
    // establishing connection
    public static void main(String[] args) {
        connect();
    }

使用连接的示例

private Connection connect() {
        // MySQL connection string
        String url = "jdbc:mysql://localhost:3306","sarams", "password";
        Connection con = null;
        try {
            con = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return con;
    }

问题已解决,只是java冲突。使用 jdk 11 编译并尝试 运行 JRE 1.8。删除JRE并安装JDK 11,问题解决。