有人可以向我解释为什么以下代码在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目录中。并且仍然遇到同样的错误。
答案 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
文件末尾有空行