有一个非常类似的问题,但在我的情况下,我的构建路径中没有任何重复的jar,所以解决方案对我不起作用.我现在已经搜索了谷歌几个小时,但我找到的解决方案都没有解决我的问题.我正在创建一个带有一些数据库连接的网站来完成作业.我正在使用MySQL数据库,在Eclipse中开发并在Windows上运行.
我一直在java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
使用以下代码:
import java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
Connection connection = null;
PreparedStatement query = null;
try {
out.println("Create the driver instance.<br>");
Class.forName("com.mysql.jdbc.Driver").newInstance();
out.println("Get the connection.<br>");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
query = connection.prepareStatement( "SELECT * FROM customers");
//...
} catch (Exception e)
{
out.println(e.toString()+"<br>");
}
}
//...
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我得到以下输出:
Create the driver instance.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
它没有超越Class.forName...
线,我无法弄清楚为什么!这是我做的:
C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar
. mysql-connector-java-5.1.12-bin.jar
.每当我尝试使用servlet时,无论我是否有jar或者我没有,我都会得到相同的错误.你能帮我搞清楚吗?
我在stackoverflow上看到了几个类似的问题,但它们并没有解决我的问题.这个特别有用,因为它指向官方tomcat文档 ,特别是本节.
简而言之,提供的解决方案是:tomcat需要将jdbc数据库驱动程序复制到$CATALINA_HOME/lib
,因为它不会找到它们WEB-INF/lib/
.好吧,但它仍然不适合我,我变得疯了.
让我们看看您是否可以提供任何进一步的想法.
环境是Windows XP,Tomcat7,Eclipse Indigo,Java6和Spring3.
mysql-connector
已被复制到 $CATALINA_HOME/lib
C:\>dir "c:\Program Files\Apache-Tomcat-7.0.12\lib"\mysql*
[...]
/2012 13:39 877.094 mysql-connector-java-5.1.21.jar
[...]
C:\>
Run Code Online (Sandbox Code Playgroud)
您可能知道Eclipse的Tomcat集成为其部署(CATALINA_BASE
)创建了一个特定于WTP的目录,所以我也在那里复制了mysql-connector(我没有尝试过使用mysql-conector.jar
in CATALINA_HOME
,in CATALINA_BASE
和in两者):
C:\>dir c:\Share\genesis\wsEclipse-indigo\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\lib
[...]
29/08/2012 13:39 877.094 mysql-connector-java-5.1.21.jar
[...]
C:\>
Run Code Online (Sandbox Code Playgroud)
据我了解Tomcat的catalina.properties文件,它们都被添加到类路径中,所以我没想到会有什么不同,但我试过,以防万一.
我的spring数据源定义非常简单:
<bean id="securityDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/venus" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
Run Code Online (Sandbox Code Playgroud)
但是当我重新启动tomcat时,我收到以下错误:
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error …
Run Code Online (Sandbox Code Playgroud)