Java ClassNotFound&;没有合适的司机,我哪里出错了?
我已经创建了一个在NetBeans上的IDE中可以完美工作的程序,但是每当我构建.jar文件时,数据库连接就会停止工作。我已经向MySQL连接器添加了类路径,并定义了Class.forName(“com.MySQL.jdbc.Driver”);还是没什么Java ClassNotFound&;没有合适的司机,我哪里出错了?,java,mysql,mariadb,connection,Java,Mysql,Mariadb,Connection,我已经创建了一个在NetBeans上的IDE中可以完美工作的程序,但是每当我构建.jar文件时,数据库连接就会停止工作。我已经向MySQL连接器添加了类路径,并定义了Class.forName(“com.MySQL.jdbc.Driver”);还是没什么 try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/gea
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/gearheads";
Connection conn = DriverManager.getConnection(url,"root","HellOnEarth202021");
Statement stmt = conn.createStatement();
ResultSet rs;
String pid = txt_staffID.getText();
rs = stmt.executeQuery("SELECT name,timeraccess FROM staff WHERE staffid = '"+pid+"'");
while ( rs.next() ) {
String timeraccess = rs.getString("timeraccess");
String staffName = rs.getString("name");
getLogin = staffName;
System.out.println(staffName);
System.out.println("Users Admin Level: " + timeraccess);
if ( timeraccess.equals("1")) {
this.dispose();
new menu().setVisible(true);
System.out.println("Access Granted");
}else
System.out.println("Access Restricted.");
}
conn.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
txt_staffID.setText(e.toString());
System.err.println(e.getMessage());
}
就目前而言,这将产生:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
其中取出Class.forName输出:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/gearheads
请帮帮我。此链接是我的库的屏幕截图
我的图书馆:
如果它在Netbeans中正确运行,那么MySQL驱动程序是正确的 您必须搜索Manifest文件(Manifest.MF),并且可能必须在您自己的JAR文件中取消保存驱动程序的内容 我现在就留下这个答案,但我会尽力收集细节,把它带回这里 我还使用NetBeans,当我生成JAR文件时,它已经在复制依赖库并生成正确的MANIFEST.MF 我最终得到了以下结构 MyProject\dist\lib\JdbcDriver.jar and MyProject\dist\MyProject.jar MyProject\dist\lib\JdbcDriver.jar 和 MyProject\dist\MyProject.jar 在MyProject.jar中,我有以下MANIFEST.MF: Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.7 Created-By: 1.8.0_201-b09 (Oracle Corporation) Class-Path: lib/JdbcDriver.jar X-COMMENT: Main-Class will be added automatically by build Main-Class: myproject.MyMainClass 清单版本:1.0 Ant版本:ApacheAnt1.9.7 创建人:1.8.0_201-b09(Oracle公司) 类路径:lib/JdbcDriver.jar X注释:主类将由生成自动添加 主类:myproject.MyMainClass 请确认您正在将lib文件夹与JAR文件一起复制
最后一个解决方案(@Nick Media final comment):您必须在Build>Packaging Project Properties中检查“复制依赖库”。我们不清楚您到底做错了什么,但您显然做错了什么:
DriverManager.getConnection
而不是Class.forName
和特定的驱动程序类名。这是Oracle Java教程推荐的方法;看
com.mysql.jdbc.driver
与mysql Connector/j5.x一起使用,将com.mysql.cj.jdbc.driver
与mysql Connector/j8.x一起使用
您使用的是哪个版本的MySQL驱动程序?对于MySQL Connector/J 8.x,您使用的驱动程序类名不正确。我在哪里可以找到它?在您的项目/IDE中配置MySQL驱动程序库的地方。或者通过查看WAR file.MySQL驱动程序Java 5.1.23,但我也带来了MySQL 8.0.21.jar。我找到的每个教程都会不断调用
com.MySQL.jdbc.Driver
或com.MySQL.cj.jdbc.Driver
。我尝试了这两种方法,结果相同。驱动程序是用JDK的NetBeans 8.2预先打包的,但我不确定如何执行清单或取消对内容的存档。请告诉我tab Libraries>是如何运行的。我的是以下条目:编译源代码的类路径和编译源代码注意,如果您创建这样的可执行JAR,JVM需要始终能够找到相对于MyProject.jarYes位置的JdbcDriver.JAR!这就是为什么我要他确认他正在复制lib文件夹和主JAR文件…;-)@Nick Media,请告诉我构建>在项目属性中的打包情况如何。。。我的有一个签入“复制依赖库”,它是一个JFrame应用程序。当不构建时,它可以完美地工作,但只要我“清理并构建”,并运行packed.jar,它就会给出这些错误。我试着用com.mysql.jdbc.Driver
和com.mysql.cj.jdbc.Driver
运行,它们在NetBeans本身运行良好,但同样,在.JAR构建时运行不好,因此驱动程序可以正常工作,只是在可分发的.JAR文件中找不到驱动程序。这就是问题所在。我不是NetBeans方面的专家,但是关于创建可执行JAR的方式有些不正确。