我使用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");
}
}
2条答案
按热度按时间1l5u6lss1#
假设您正在netbeans中使用一个基于ant的项目,您可以配置您的项目,以便netbeans将创建一个可运行的jar文件,并将所有依赖库复制到
dist
项目的文件夹。为此,在项目属性的“打包”部分(在“构建”下)启用复选框“复制依赖库”。
(截图是用netbeans10拍摄的,但旧版本的选项完全相同)
确保在
Run
项目的一部分。一旦你做到了这一点,你建立了你的项目
dist
文件夹将包含MyApp.jar
和子目录lib
将包含已添加到项目中的所有库。这个MyApp.jar
将包含MANIFEST.MF
其中包括应用程序jar和所有相关库(位于lib
目录),以便可以使用java -jar MyApp.jar
bgtovc5b2#
就问题评论中的讨论发表声明:
问题是在运行可执行jar时,jvm的类路径中缺少mysql jdbc jar。它在eclipse之外工作,因为ide在向项目添加依赖项并运行其中一个类文件时负责正确的类路径创建。
如果您要从项目中创建一个jar,eclipse将不会向其中添加依赖项。你得自己处理。现在您有两个选择:
让eclipse像这里描述的那样将jar捆绑到可执行jar中
运行jar时自己创建类路径。你需要添加
-cp
参数,并列出运行应用程序所需的jar(参见此处示例)编辑:
既然您使用的是netbeans,那么似乎netbeans不像eclipse那样有这个选项。所以你被我的第二种选择困住了