我的javaexe不能连接到sql数据库,但是如果我使用ide,它就可以工作

fae0ux8s  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(440)

我使用netbeans8做了一个项目,在这个项目中,我必须连接到mysql数据库并在表中显示内容。当我使用ide的连接工作得很好!但是当我清理并构建一个可执行jar时,我的程序无法连接到数据库。。。有人能帮我吗?谢谢您!
这就是我使用的代码:

@FXML
    private void loadDB() {
        //cleaning all fields from table View and removing previous elements from studentList before show new content;
        tableView.getItems().clear();
        studentList.removeAll();

        String stg = dataBaseField.getText();
        //Expected string format:
        //jdbc:mysql://mymysql.senecacollege.ca/eden_burton?user=jac444_183a01&password=eqXE@4464

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("Error loading the driver" + e);
        }
        try {
            //connecting to the database
            Connection conexao = DriverManager.getConnection(dataBaseField.getText());

            //creating a statement and query to be executed
            Statement myStmt = conexao.createStatement();
            ResultSet result = myStmt.executeQuery("select * from Students");

            //look at the result set
            while (result.next()) {
                Student student_ = new Student(result.getInt("id"), result.getString("name"), result.getString("course"), result.getInt("grade"));
                studentList.addNaLista(student_);
                tableView.setItems(getStudent(studentList.getList()));
            }

            myStmt.close();//closing statement
            result.close();//closing results
            conexao.close();//closing connection

        } //if a connection could not be set.
        catch (SQLException exc) {
            alert("CONNECTION ERROR!", "Please verify your connection string.", "String should be in the following format: " + "\n\njdbc:mysql://mymysql.senecacollege.ca/DATABASENAME?user=USERNAME&password=PASSWORD");
        }
    }
1l5u6lss

1l5u6lss1#

假设您正在netbeans中使用一个基于ant的项目,您可以配置您的项目,以便netbeans将创建一个可运行的jar文件,并将所有依赖库复制到 dist 项目的文件夹。
为此,在项目属性的“打包”部分(在“构建”下)启用复选框“复制依赖库”。

(截图是用netbeans10拍摄的,但旧版本的选项完全相同)
确保在 Run 项目的一部分。
一旦你做到了这一点,你建立了你的项目 dist 文件夹将包含 MyApp.jar 和子目录 lib 将包含已添加到项目中的所有库。这个 MyApp.jar 将包含 MANIFEST.MF 其中包括应用程序jar和所有相关库(位于 lib 目录),以便可以使用 java -jar MyApp.jar

bgtovc5b

bgtovc5b2#

就问题评论中的讨论发表声明:
问题是在运行可执行jar时,jvm的类路径中缺少mysql jdbc jar。它在eclipse之外工作,因为ide在向项目添加依赖项并运行其中一个类文件时负责正确的类路径创建。
如果您要从项目中创建一个jar,eclipse将不会向其中添加依赖项。你得自己处理。现在您有两个选择:
让eclipse像这里描述的那样将jar捆绑到可执行jar中
运行jar时自己创建类路径。你需要添加 -cp 参数,并列出运行应用程序所需的jar(参见此处示例)
编辑:
既然您使用的是netbeans,那么似乎netbeans不像eclipse那样有这个选项。所以你被我的第二种选择困住了

相关问题