【问题标题】:Connecting Java to MySQL - Package does not exist将 Java 连接到 MySQL - 包不存在
【发布时间】:2021-11-19 15:08:47
【问题描述】:

我花了很多时间试图弄清楚这一点,并遵循了许多指示,但无济于事。

我正在尝试将我的程序与我的 MySQL 数据库连接起来,我已经安装了 MySQL 驱动程序,或者至少我认为我已经安装了,我已将其添加到类路径中,然后我还将它安装为用户库。

然后当我通过命令行编译它时,我得到一个错误: 错误:com.mysql.jdbc 包不存在

我什至下载了驱动程序 jar 的早期版本,但没有成功,我可能花了整整 8 个小时来解决这个问题

我的代码:

String[] settings = new String[10];

    try {

        FileReader fr = new FileReader("settingsFile.txt");
        BufferedReader textReader = new BufferedReader(fr);

        for(int i=0; i <=9; i++){
                settings[i] = textReader.readLine();
            }

        textReader.close();

    } catch (IOException e) {
        JOptionPane.showMessageDialog(null, "Unable to connect to database.\nSettings file Not Found");
    }

    String host = settings[2];
    String uName = settings[3];
    String uPass = settings[4];

    try {
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver).newInstance();
        Connection con = DriverManager.getConnection(host, uName, uPass);

        JOptionPane.showMessageDialog(null, "Connection to database established");
    }
    catch ( SQLException | ClassNotFoundException | IllegalAccessException | InstantiationException err ) {
        JOptionPane.showMessageDialog(null, err.getMessage( ) + "\n\nDid not connect.");
    }

}

请帮忙,我想我会对此感到沮丧。

【问题讨论】:

  • 我正在尝试连接我的脚本 - 什么脚本?
  • 您将 MySQL 连接器 JAR 放在哪里?你是如何构建和运行你的程序的?
  • 请分享您的异常的完整堆栈跟踪,这会很有帮助。
  • jar文件的名称是mysql-connector-java-5.0.8-bin.jar,我用的是Eclipse,jar在项目文件夹内的一个文件夹中。
  • 我是自学成才,对 Java 还是很陌生,很抱歉我不知道那是什么。

标签: java mysql jar package


【解决方案1】:

我通过不包含解决了这个问题

import com.mysql.cj.util.StringUtils; 
import java.mysql.*;

我还在控制器中创建了一个 StringUtils.java 类。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

你能显示你的编译命令吗?你说的是javac吗?也许你应该指定classpath来让jvm找到mysql相关的类文件。

就像

javac -classpath "jar file locations" YourJavaFile.java

【讨论】:

    【解决方案3】:

    如果你有这个错误,你只能得到这个错误

    import com.mysql.jdbc.*;
    

    或从该包中导入一个或多个特定的。

    解决方案:删除它。你不需要它。您应该只从java.sql 导入。

    注意,自 2007 年以来,您不再需要 Class.forName(driver).newInstance(); 行。

    【讨论】:

    • 所以我也应该删除Class.forName(driver).newInstance(); 的整行?
    • 我已经告诉过你,自 2007 年以来你就不需要它了,很难理解你为什么要问。
    • 好的,现在它给出了没有合适的驱动程序安装的错误消息。
    • @ScaryWombat 删除不存在包的导入将删除有关不存在包的错误消息。显然你甚至没有读过我的回答。
    • @HaydenKennedy 因此,当您运行程序时,MySQL 连接器 JAR 文件不在 CLASSPATH 中。
    【解决方案4】:

    首先要做的事情: 您需要检查 MySQL 的驱动程序是作为库还是作为 JAR 添加的, 你想把它当作一个罐子。

    你至少需要导入这个包:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    

    你不需要:

      String driver = "com.mysql.jdbc.Driver";
            Class.forName(driver).newInstance();
    

    你可以这样做:

    Class.forName("com.mysql.jdbc.Driver");
    

    同样在您的代码中,我不确定您是否在连接之前向数据库发出请求,您要做的第一件事就是创建连接并在此之前无法请求连接,否则您将收到错误:

    public static Connection connection= null;
    
        public static void openConnection(){
    
            try {
                Class.forName("com.mysql.jdbc.Driver"); //you call the mysql driver so it gets loaded
                connection= DriverManager.getConnection(URL_CONEXION, USER, PASSWORD); //you actually connect to the DataBase
                if (connection!=null) {
                    JOptionPane.showMessageDialog(null,"Connection to:  "+ DATA_BASE + " Successful","Attention",JOptionPane.INFORMATION_MESSAGE);
                    //message to show that you are actually connected
                }
            }catch(ClassNotFoundException | SQLException ex){                
                   System.out.println(ex.getMessage()); // You print in console the error
            }
    
        }
    

    【讨论】:

    • Class.forName("com.mysql.jdbc.Driver") 不会创建连接,也没有必要。
    • 它不会创建连接,但会检查类是否存在。这是一种在实际创建连接之前捕获错误的方法。不,这不是必需的,但这是一种很好的做法。
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2014-06-11
    相关资源
    最近更新 更多