Java &引用;“没有合适的司机”;运行时,但不在IDE中

Java &引用;“没有合适的司机”;运行时,但不在IDE中,java,mysql,eclipse,Java,Mysql,Eclipse,有人能给我解释一下为什么我在EclipseIDE中运行应用程序时,下面的代码可以工作,但在服务器上编译和运行时,它会生成异常? 我就是不明白 public class Database { Connection conn = null; Statement stmt = null; ResultSet rs = null; public Database() throws SQLException { String host = "localhost:3

有人能给我解释一下为什么我在EclipseIDE中运行应用程序时,下面的代码可以工作,但在服务器上编译和运行时,它会生成异常? 我就是不明白

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;
    }
}
}
这是我得到的stacktrace:

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)
java.sql.SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/stickmanDatabase?user=richard&password=xxxxxxxx
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
在stickmanPyramidScheme.server.Database.(Database.java:23)
在stickmanPyramidScheme.server.LoginVerification.verifyLogin(LoginVerification.java:10)
在stickmanPyramidScheme.server.StickmanServer.parseAndExecute(StickmanServer.java:55)上
位于stickmanPyramidScheme.server.StickmanServer.main(StickmanServer.java:32)
我的理解是,问题在于,我需要在构建路径中使用文件“mysql-connector-java-5.1.18-bin.jar”,如果我将其删除,代码在Eclipse中运行时将不再有效

任何帮助都将不胜感激。谢谢

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

您不仅需要IDE中的驱动程序jar文件,而且还需要将其安装在服务器上。您没有说这是哪种服务器,但jar必须位于服务器进程的类路径上;即,在WEB应用程序的
WEB-INF/lib
目录中,或者简单地说在服务器JVM的
-classpath
参数中指出。

您不仅需要IDE中的驱动程序jar文件,还需要将其安装在服务器上。您没有说这是哪种服务器,但jar需要位于服务器进程的类路径上;即,在WEB进程的
WEB-INF/lib
目录中pp,或仅在服务器JVM的
-classpath
参数中指示。

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

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

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

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

顺便说一句:在你的问题标题中是“运行时”,而不是“编译时”。

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

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


顺便说一句:在你的问题标题中是“运行时”而不是“编译时”。

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

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

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


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

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


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

我解决了这个问题。。。 我的印象是Eclipse负责将所有文件放在一起,但我需要在清单中添加类路径。将它放在清单中是有效的,但是添加一个-classpath选项或将它添加到我的路径中都没有

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

Class-Path: /path/file.jar

文件末尾有一个空行

我解决了这个问题。。。 我的印象是Eclipse负责将所有文件放在一起,但我需要在清单中添加类路径。将它放在清单中是有效的,但是添加一个-classpath选项或将它添加到我的路径中都没有

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

Class-Path: /path/file.jar

文件末尾有空行

请在错误输出上使用代码格式。请注意,使用格式更清晰(我编辑了您的问题)。根据下面的建议,我。。。。添加Class.forName(“com.mysql.jdbc.Driver”),将“mysql-connector-java-x.x.xx-bin.jar”文件移动到WEB-INF/lib目录(与应用程序位于同一目录)中,并将“mysql-connector-java-x.x.xx-bin.jar”添加到-classpath中。这些都不起作用,我也没有想到它们的任何组合。我很不明白为什么这不起作用。一个
-bin.jar
通常包含本地人(例如
.dll
.so
文件)。AFAIU用户Jar还应该只包含类的Jar,特别是
com.mysql.jdbc.Driver
。您是否有允许您检查JAR内容的IDE,或者您知道如何使用SDK工具列出内容?如果是这样,找到包含该类的JAr,并将其添加到
WEB-INF/lib
。还要注意a)最好编辑此类信息。作为更新b)只有我会收到你开始评论的通知。。“根据下面的建议,…”尝试添加我的