java.lang.ClassNotFoundException:spring JdbcTemplate项目中的com.jdbc.mysql.Driver
我确实添加了mysql.jar文件,但仍然得到了java.lang.ClassNotFoundException:com.jdbc.mysql.Driver 这里是外部图书馆 [在此处输入图像描述][1] 这是LoginAction.javajava.lang.ClassNotFoundException:spring JdbcTemplate项目中的com.jdbc.mysql.Driver,java,mysql,spring,jdbc,intellij-idea,Java,Mysql,Spring,Jdbc,Intellij Idea,我确实添加了mysql.jar文件,但仍然得到了java.lang.ClassNotFoundException:com.jdbc.mysql.Driver 这里是外部图书馆 [在此处输入图像描述][1] 这是LoginAction.java package action; import com.opensymphony.xwork2.ActionSupport; import org.springframework.jdbc.core.JdbcTemplate; /** * Create
package action;
import com.opensymphony.xwork2.ActionSupport;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* Created by ccc on 2016/12/2.
*/
public class LoginAction extends ActionSupport {
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public String execute() throws Exception {
//return SUCCESS;
String sql="SELECT Definition FROM word_test LIMIT 10,10;";
if(jdbcTemplate==null){
return ERROR;
}else {
jdbcTemplate.execute("UPDATE word_test\n" +
"SET Definition='what'\n" +
"WHERE id=1;");
return SUCCESS;
}
}
}
这是一个错误
03-Dec-2016 11:29:15.194 警告 [C3P0PooledConnectionPoolManager[identityToken->1hge1149k1i131k71i7l21o|5b4523ab]-HelperThread-#0] com.mchange.v2.c3p0.DriverManagerDataSource. Could not load driverClass com.jdbc.mysql.Driver
java.lang.ClassNotFoundException: com.jdbc.mysql.Driver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.mchange.v2.c3p0.DriverManagerDataSource.ensureDriverLoaded(DriverManagerDataSource.java:143)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:173)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
这是applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 连接驱动 -->
<property name="driverClass" value="com.jdbc.mysql.Driver" />
<!-- 连接URL -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/word" />
<!-- 用户账号 -->
<property name="user" value="root" />
<!-- 用户密码 -->
<property name="password" value="MySqlccc123456" />
<!-- 连接池中保留的最大接数。默认值: 0~30 -->
<property name="maxPoolSize" value="30" />
<!-- 连接池中保留的最小接数。默认值: 0~30 -->
<property name="minPoolSize" value="0" />
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 2 -->
<property name="acquireIncrement" value="2" />
<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default:0 -->
<property name="maxIdleTime" value="1800" />
<!-- -->
<property name="maxConnectionAge" value="300" />
</bean>
<bean id="iocLoginAction" class="action.LoginAction">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>
我做了一个测试。java也将导致错误
package action;
/**
* Created by ccc on 2016/12/2.
*/
import com.mysql.jdbc.Driver
public class TestMain {
public static void main(String[] args){
try {
Class<?> clas = Class.forName("com.jdbc.mysql.Driver");
} catch (ClassNotFoundException e) {
System.out.print("can't find jdbc"+"\n"+"\n"+"\n");
e.printStackTrace();
}
}
}
java.lang.ClassNotFoundException: com.jdbc.mysql.Driver
can't find jdbc
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at action.TestMain.main(TestMain.java:9)
at sun.reflect.NativeMethodAccessorI
然后我将数据源更改为这个(applicationContext.xml),它就可以工作了,为什么?
如何使用c3p0数据源
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--数据源的配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/word"></property>
<property name="username" value="root"></property>
<property name="password" value="MySqlccc123456"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean name="iocLoginAction" class="action.LoginAction">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>
jar文件不在类路径中。检查TestMain.java中第10行的“externallibraries”Class.forName(“com.mysql.jdbc.Driver”)
我添加了一张“externallibraries”的图片。您是手动输入类名的吗?请将com.jdbc.mysql.Driver
修改为com.*mysql.jdbc**.Driver
。是否手动输入类名?请将com.jdbc.mysql.Driver修改为com.**mysql.jdbc**.Driver。是否手动输入类名?请将com.jdbc.mysql.Driver修改为com.*mysql.jdbc**.Driver。是否手动输入类名?请将com.jdbc.mysql.Driver
修改为com.mysql.jdbc.Driver
。尝试com.mysql.jdbc.Driver
而不是com.jdbc.mysql.Driver
。你导入的正确,那么为什么要在类中翻转包名。forName()
调用?谢谢,你说得对。我太粗心了!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--数据源的配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/word"></property>
<property name="username" value="root"></property>
<property name="password" value="MySqlccc123456"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean name="iocLoginAction" class="action.LoginAction">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>