java.lang.ClassNotFoundException:com.mysql.jdbc.Driver在运行时(eclipse/maven/tomcat)

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver在运行时(eclipse/maven/tomcat),mysql,eclipse,tomcat,maven-2,jdbc,Mysql,Eclipse,Tomcat,Maven 2,Jdbc,我在运行tomcat“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver”时遇到此错误。我正在使用Eclipse(Indigo,J2EE版本)/Maven(m2e wtp)/Tomcat7.0的组合。我已经在我的pom文件中为我的web应用程序(从头开始构建)包含了这个依赖项 Tomcat 7要求JDBC驱动程序JAR必须位于其/lib目录中: 搜索单词“忘记”。确保驱动程序被复制到您的webapp WEB-INF/lib目录和wtp

我在运行tomcat“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver”时遇到此错误。我正在使用Eclipse(Indigo,J2EE版本)/Maven(m2e wtp)/Tomcat7.0的组合。我已经在我的pom文件中为我的web应用程序(从头开始构建)包含了这个依赖项


Tomcat 7要求JDBC驱动程序JAR必须位于其/lib目录中:


搜索单词“忘记”。

确保驱动程序被复制到您的webapp WEB-INF/lib目录和wtp deploy dir(类似于工作区中的/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/)


我发现maven wtp集成有点过于完美,因为我经常遇到这个问题。

对于这个错误:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver


您需要“Import com.mysql.jdbc.Driver;”,即使它在应用程序运行之前没有使用。

您也复制了Tomcat lib文件夹中的mysql连接器jar文件吗?感谢您的快速响应。我没有尝试,因为我希望maven能够通过将必要的jar复制到WebContent/WEB-INF/lib或它放置它们的任何地方来处理所有jar依赖关系。我应该明确地这样做吗?我将尝试更新线程。Tudor和duffymo建议您将驱动程序复制到tomcat的lib目录($CATALINA_HOME/lib)中,而不是web应用程序lib目录中。是的,现在复制了它,我不再看到异常。我知道这是一种解决方案,但我一直在试图弄清楚如何通过maven进行配置,以便在不进行任何手动配置的情况下处理它。感谢您的帮助。您是否使用jdni查找数据源?那么pom.xml中的作用域呢?默认的编译范围也会在war中对其进行打包,这会是一个问题吗?只有当您使用jdni资源查找来查找数据源时才是这样,这可能不是asker的情况。如果不是,这实际上是一个错误的建议,应该避免,因为它污染了全局lib目录,其中的库只有一个webapp需要,在取消部署时不会被删除。这非常关键。我过去在与其他版本的Tomcat一起工作时没有明确复制它,我忽略了这个版本(Tomcat 7.0)。我还将尝试更改pom中的作用域,看看这是否有助于避免显式复制到/lib目录。“污染全局/lib目录”?如果这种污染是有害的,我怀疑那些写Tomcat的人会做出改变。从某种意义上说,部署在Tomcat单个实例上的应用程序也可能共享一个数据源,这是一件好事;这种安排确保每个人都能接触到合适的司机。如果不同的应用程序需要不同版本的驱动程序,这是一件坏事,但如果数据库是共享的,则通常不是这样。这会修复错误。对于那些通过Eclipse的动态Web项目进行此操作的人,如果他们不知道
$CATALINA_HOME
,请执行
查找
CATALINA.sh
(对于我来说是
/Library/Tomcat/apache-Tomcat-8.0.28/bin/CATALINA.sh
),然后以
CATALINA.sh version
的形式调用该脚本,在输出中,您将看到
$CATALINA_HOME
的值。在该目录的lib文件夹下,复制mysql jar。我该怎么做?通过更改mysql连接器jar的maven依赖项的范围或手动复制它,我没有使用JNDI。我更新了关于如何加载驱动程序的帖子。我只是通过手动复制来实现。也许有更好的解决办法。如果是这样的话,我很想知道。这里的问题也一样:。一些评论员只是在pom.xml中显式地复制资源
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
static {
        DriverAdapterCPDS cpds_Customer = new DriverAdapterCPDS();
        try {                        cpds_Customer.setDriver(productConfig.getProperty("dbcp.connection.customer.driver_class"));

        } catch (ClassNotFoundException e) {
            // log.error("setDriver Exception " + e);
            e.printStackTrace();
        }
               }