“没有合适的驱动程序”在运行时,但不在IDE中

时间:2012-03-18 03:28:59

标签: java mysql eclipse

有人可以向我解释为什么以下代码在Eclipse IDE中运行应用程序时有效,但是在编译并在服务器上运行时会产生异常吗? 我只是不明白......

public class Database {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;

    public Database() throws SQLException {
    String host = "localhost:3306";
    String schema = "stickmanDatabase";
    String user = "richard";
    String password = "xxxxxxxx";
    String url = "jdbc:mysql://" + host + "/" + schema + "?user=" + user + "&password=" + password;

    try {
        conn = DriverManager.getConnection(url);
    } catch (SQLException e) {
        e.printStackTrace();
        throw e;
    }
}
}

这是我得到的堆栈跟踪:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/stickmanDatabase?user=richard&password=xxxxxxxx
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at stickmanPyramidScheme.server.Database.<init>(Database.java:23)
    at stickmanPyramidScheme.server.LoginVerification.verifyLogin(LoginVerification.java:10)
    at stickmanPyramidScheme.server.StickmanServer.parseAndExecute(StickmanServer.java:55)
    at stickmanPyramidScheme.server.StickmanServer.main(StickmanServer.java:32)

我的理解是问题是我需要在构建路径中使用文件“mysql-connector-java-5.1.18-bin.jar”。如果我删除它,代码在运行时不再有效在Eclipse中。

非常感谢任何帮助。感谢。

...

Per Andrew的请求......我在Ubuntu Linux服务器上使用Eclipse。 我可以看到“mysql-connector-java-5.1.18-bin.jar”包含“com.mysql.jdbc”,其中包含“Driver.class” jar被添加到(应用程序目录)/ WEB-INF / lib目录中。并且仍然遇到同样的错误。

6 个答案:

答案 0 :(得分:1)

您不仅需要IDE中的驱动程序jar文件,还需要将其安装在服务器上。你没有说这是什么类型的服务器,但jar需要在你的服务器进程的类路径上;即,在您的Web应用程序的WEB-INF/lib目录中,或者只是在服务器JVM的-classpath参数中指示。

答案 1 :(得分:1)

在eclipse中运行文件时,您的jdbc驱动程序位于项目类路径中。将其部署到服务器时,还必须将其包含在服务器中。在war / jar / ear lib或某些服务器lib中。

答案 2 :(得分:1)

DriverManager.getConnection(url);之前调用 Class.forName(“com.mysql.jdbc.Driver”);

因为DriverManager不知道MySql驱动程序。 Class.forName("com.mysql.jdbc.Driver")将MySql Driver实现本身注册到DriverManager。

btw:在你的问题标题中,它是“在运行时”而不是“在编译时”。

答案 3 :(得分:1)

哥们,很简单,只需将“mysql-connector-java-x.x.xx-bin.jar”添加到“WEB-INF / lib”文件夹中

答案 4 :(得分:0)

您需要在应用程序的WEB-INF / lib文件夹中添加ojdbc14.jar以及mysql连接器jar。

如果您有任何其他问题,请告诉我。

答案 5 :(得分:0)

我发现了问题...... 我的印象是Eclipse要处理所有文件,但我需要在Manifest中添加类路径。将它放在清单中是有效的,但添加-classpath选项也不会将其添加到我的PATH中。

任何有类似问题的人都应该注意到你需要将它添加到Eclipse创建的jar中的MANIFEST.MF中:

Class-Path: /path/file.jar

文件末尾有空行