找不到 mysql.jdbc.Driver - MySQL、JBoss

Posted

技术标签:

【中文标题】找不到 mysql.jdbc.Driver - MySQL、JBoss【英文标题】:Can't find mysql.jdbc.Driver - MySQL, JBoss 【发布时间】:2011-09-22 09:39:13 【问题描述】:

我无法将带有 mysql 5.5.11 后端的 Web 应用程序部署到 JBoss 5。我收到此错误:

原因:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@262b2310

我在下面粘贴了我的堆栈跟踪。

这就是我所做的......

我将 mysql-connector-java-5.1.14-bin.jar 添加到 JBOSS_HOME/lib (该连接器应该适用于 MySQL 5.5.11 对吧?)。我还将 mysql-ds.xml 添加到 JBOSS_HOME/server/default/deploy。

<datasources> 
    <local-tx-datasource> 
        <jndi-name>MySqlDS</jndi-name> 
        <connection-url>jdbc:mysql://localhost:3306/my_libl_db</connection-url> 
        <driver-class>com.mysql.jdbc.Driver</driver-class> 
        <user-name>root</user-name> 
        <password>test</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    </local-tx-datasource> 
</datasources> 

另外,我确保我的 lib 文件夹中的 mysql-connector-java-5.1.14-bin.jar 位于我的 Web 应用程序类路径中。在 JBoss 管理控制台的 Resources/Datasources 下,我确实看到了状态为 up 的 MySqlDS。

我的项目(在 Eclipse Indego 版本中)是一个企业应用程序项目,带有 1 个动态 Web 项目。 Web 应用程序有一个 @Entity bean 和一个 @Stateless bean。 @Stateless 被注入到一个servlet(使用@EJB)。这是我的 persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    <persistence-unit name="ContactBookPersistUnit" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider> 
        <jta-data-source>java:/MySqlDS</jta-data-source>
        <class>com.contact.model.Contact</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

我做错了什么?

Caused by: javax.resource.ResourceException: Unable to get managed connection for MySqlDS
    at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:441)
    at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:381)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:496)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:941)
    at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
    ... 65 more
Caused by: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@262b2310VFSClassLoaderPolicy@5a0b0303name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ domain=ClassLoaderDomain@5e33f929name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ parentPolicy=AFTER_BUT_JAVA_BEFORE parent=BaseClassLoader@7cdd93a5vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ roots=[ZipEntryHandler@150136868[path=ContactBook.ear/ContactBookWeb.war/WEB-INF/classes context=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ real=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/WEB-INF/classes]]  delegates=null exported=[, com.contact.servlet, com.contact.service, com.contact.model, com.contact.control, META-INF] <IMPORT-ALL>NON_EMPTY))
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:225)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:195)
    at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:633)
    at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:267)
    at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:622)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:404)
    ... 69 more
Caused by: org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@262b2310VFSClassLoaderPolicy@5a0b0303name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ domain=ClassLoaderDomain@5e33f929name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ parentPolicy=AFTER_BUT_JAVA_BEFORE parent=BaseClassLoader@7cdd93a5vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ roots=[ZipEntryHandler@150136868[path=ContactBook.ear/ContactBookWeb.war/WEB-INF/classes context=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ real=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/WEB-INF/classes]]  delegates=null exported=[, com.contact.servlet, com.contact.service, com.contact.model, com.contact.control, META-INF] <IMPORT-ALL>NON_EMPTY)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getDriver(LocalManagedConnectionFactory.java:489)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:206)
    ... 74 more
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@262b2310VFSClassLoaderPolicy@5a0b0303name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ domain=ClassLoaderDomain@5e33f929name=vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/ parentPolicy=AFTER_BUT_JAVA_BEFORE parent=BaseClassLoader@7cdd93a5vfszip:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ roots=[ZipEntryHandler@150136868[path=ContactBook.ear/ContactBookWeb.war/WEB-INF/classes context=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ real=file:/Users/Albert/DEV/Servers/JBoss5/server/default/deploy/ContactBook.ear/ContactBookWeb.war/WEB-INF/classes]]  delegates=null exported=[, com.contact.servlet, com.contact.service, com.contact.model, com.contact.control, META-INF] <IMPORT-ALL>NON_EMPTY
    at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:448)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getDriver(LocalManagedConnectionFactory.java:474)

【问题讨论】:

【参考方案1】:

这段文档说您需要将 JAR 添加到默认服务器配置中的 /lib 文件中:

http://docs.jboss.org/jbossas/getting_started/v4/html/db.html

更新:JBOSS 6 和更新版本已被重写为更加模块化。您必须将 JBDC 驱动程序添加到您的 /module 目录中。

【讨论】:

太棒了!我的 .ear 现在已部署,我正在经历新的问题。感谢您的帮助。 我复制了 mysql-connector-java-5.0.7-bin.jar 但在我的情况下仍然无法正常工作。你能列出我要复制到 lib 文件夹中的 jar 文件的名称吗 同样的问题,我将连接器 jar 复制到 lib 仍然存在连接问题,有什么解决办法吗?威廉姆斯? 你也做错了。现在的答案取决于 JBOSS 的版本。我需要 JBOSS 6/7 中的模块。

以上是关于找不到 mysql.jdbc.Driver - MySQL、JBoss的主要内容,如果未能解决你的问题,请参考以下文章

Impala 找不到 com.mysql.jdbc.Driver

找不到类 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

为啥我找不到 Class.forName("com.mysql.jdbc.Driver"); 的异常[复制]

尝试连接到 Mysql 数据库时找不到类 com.mysql.jdbc.Driver jdbc

在 Worklight 平台中找不到 com.mysql.jdbc.Driver 或项目错误

java web 工程找不到tomcat类 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver