java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22297112/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
提问by sneha
Iam doing a project on spring MVC with maven.Iam getting an error java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource while running project.I include all the dependencies i think..below my codes.waiting for your reply
我正在使用 maven 在 spring MVC 上做一个项目。我在运行项目时收到错误 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource。我包括我认为的所有依赖项..在我的代码下面。等待您的回复
WEB.xml
网页.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>AccPerSpring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AccPerSpring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
servlet-context.xml
servlet-context.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"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!-- Enable @Controller annotation support -->
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
<context:component-scan base-package="com.gerrytan.pizzashop"/>
<bean id="myDataSource" class=" org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="username" value="root"/>
<property name="password" value="kca@fnpl#12"/>
</bean>
<!-- Hibernate Session Factory -->
<bean id="mySessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean>
<property name="dataSource" ref="myDataSource"/>
<property name="packagesToScan">
<array>
<value>com.gerrytan.pizzashop</value>
</array>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
</value>
</property>
</bean>
<!-- Hibernate Transaction Manager -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" />
<!-- Activates annotation based transaction management -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
pom.xml
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>AccPerSpring</groupId>
<artifactId>AccPerSpring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<spring.version>3.2.3.RELEASE</spring.version>
<hibernate.version>4.2.2.Final</hibernate.version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Java EE -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Others -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
回答by Sivaranjani D
Once the build completes check in your war file-> WEB-INF/lib for commons-dbcp-1.4.jar. If it is available in the class path then your issue will be solved. One more thing is, open your commons-dbcp-1.4.jar and check that particular class(org.apache.commons.dbcp.BasicDataSource) is available or not? if not you have to try some other versions of commons-dbcp-1.4.jar.
一旦构建完成,请检查您的 war 文件 -> WEB-INF/lib for commons-dbcp-1.4.jar。如果它在类路径中可用,那么您的问题将得到解决。还有一件事是,打开您的 commons-dbcp-1.4.jar 并检查特定类(org.apache.commons.dbcp.BasicDataSource)是否可用?如果没有,您必须尝试一些其他版本的 commons-dbcp-1.4.jar。
回答by ATG
Sometimes you get these strange exceptions when you have conflicting versions of the same class. This can happen because a different version of the same JAR is already on the application server's classpath, or if it's been included via a different dependency.
有时当你有同一个类的冲突版本时,你会得到这些奇怪的异常。这可能是因为同一 JAR 的不同版本已经在应用程序服务器的类路径中,或者它是通过不同的依赖项包含的。
mvn dependency:tree
is a command you can run to see all the dependencies that come into your application, including those that get brought in from other JARs. It might be worth running this to check for other "dbcp" JARs that may be causing a conflict.
mvn dependency:tree
是一个命令,您可以运行它来查看进入应用程序的所有依赖项,包括从其他 JAR 引入的依赖项。可能值得运行它来检查可能导致冲突的其他“dbcp”JAR。
It's also worth checking your "lib" folder in the application server into which you're deploying to see if there's any "dbcp" JAR in there already. If this is the case, then changing the scope to "provided" for the "commons-dbcp" artefact should fix the problem.
还值得检查您要部署到的应用程序服务器中的“lib”文件夹,以查看其中是否已经存在任何“dbcp”JAR。如果是这种情况,那么将“commons-dbcp”人工制品的范围更改为“提供”应该可以解决问题。
回答by soysal
One common mistake could be importing class
一个常见的错误可能是导入类
org.apache.tomcat.dbcp.dbcp.BasicDataSource
org.apache.tomcat.dbcp.dbcp.BasicDataSource
instead of
代替
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp.BasicDataSource
in your java code. It can be easily missed out, even in the error messages.
在你的java代码中。即使在错误消息中,它也很容易被遗漏。