找不到 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