【发布时间】:2012-03-18 03:28:58
【问题描述】:
有人可以向我解释为什么以下代码在我在 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 中。
任何帮助将不胜感激。谢谢。
...
根据 Andrew 的要求...我在 Ubuntu Linux 服务器上使用 Eclipse。 我可以看到“mysql-connector-java-5.1.18-bin.jar”包含“com.mysql.jdbc”,其中包含“Driver.class” jar 被添加到(应用程序目录)/WEB-INF/lib 目录。仍然出现同样的错误。
【问题讨论】:
-
请在错误输出中也使用代码格式。请注意使用格式更清晰(我编辑了您的问题)。
-
根据下面的建议,我已经....添加了 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。这些都没有奏效,也没有我能想到的任何组合。我很困惑为什么这不起作用。
-
a
-bin.jar通常包含本地文件(例如.dll或.so文件)。 AFAIU 用户 Jars 还应该包含一个仅用于类的 Jar,特别是com.mysql.jdbc.Driver。您是否有允许您检查 Jars 内容的 IDE,或者您知道如何使用 SDK 工具列出内容?如果是这样,找到包含该类的 JAr,并将其添加到WEB-INF/lib。另请注意 a) 最好编辑此类信息。将问题作为更新 b) 只有我会收到您的评论开始的通知.. “根据以下建议,..”