JBOSS 7 MYSQL 缺少依赖项错误

Posted

技术标签:

【中文标题】JBOSS 7 MYSQL 缺少依赖项错误【英文标题】:JBOSS 7 MYSQL missing dependencies error 【发布时间】:2014-02-05 01:44:15 【问题描述】:

已经有很多类似的线程出现了类似的错误,但没有一个能解决我的问题,所以在尝试调试一个小时后,我决定寻求帮助。

背景

我正在建立一个 Java EE 项目。我创建了一个企业应用程序,并创建了一个 EJB 项目、JPA 项目和 Web 项目,并将 EAR 添加到企业项目中。

我还将mysql-connector-java-5.1.0-bin 添加到JBOSS/standalone/deployments 文件夹中。并将这个jar文件添加到JPA项目中。

非常感谢任何有关如何解决错误的建议。

主要错误是:

 missing/unavailable dependencies" =>   
    ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSD

这是我的完整错误:

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "org.hibernate:main" from local module loader @32008dad (roots: C:\Users\Bawn92\Desktop\Programs\jboss-as-7.1.1.Final\modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_07]
    at java.lang.Class.forName(Class.java:186) [rt.jar:1.7.0_07]
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:101)
    ... 23 more

01:50:40,265 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "SIMSProject.ear" was rolled back with failure message "JBAS014671: Failed services" => "jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\": Failed to start service","JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDBMissing[jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDB]"]
01:50:40,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment SIMSWebProject.war in 31ms
01:50:40,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment SIMSEJB.jar in 31ms
01:50:40,309 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment SIMSProject.ear in 44ms
01:50:40,312 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.persistenceunit."SIMSProject.ear#SIMSJPA": org.jboss.msc.service.StartException in service jboss.persistenceunit."SIMSProject.ear#SIMSJPA": Failed to start service

01:50:40,316 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) "JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => "Operation step-2" => "JBAS014671: Failed services" => "jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\": Failed to start service","JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDBMissing[jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDB]"]

我的 -ds.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
<datasource jndi-name="java:jboss/datasources/SIMSDB" enabled="true" 
 use-java-context="true" pool-name="SIMSDB">
 <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
<driver>mysql-connector-java-5.1.0-bin.jar</driver>
<pool></pool>
<security>
<user-name>root</user-name>
<password>nbuser</password>
</security>
</datasource>
</datasources>

我的 persistence.xml 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   <persistence-unit name="primary">

      <jta-data-source>java:jboss/datasources/SIMSDB</jta-data-source>
      <properties>

         <property name="hibernate.show_sql" value="false" />
      </properties>
   </persistence-unit>
    <persistence-unit name="SIMSJPA">
        <class>model.Class</class>
        <class>model.Subject</class>
        <class>model.Teacher</class>
        <properties>
           <!--   //i put in dialect line  -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="nbuser"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        </properties>
    </persistence-unit>
</persistence>

我的独立文件的数据源部分是:

<datasource jndi-name="java:jboss/datasources/SIMSDB" pool-name="SIMSDB">
                <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
                <driver>mysql-connector-java-5.1.0-bin.jar</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>test</user-name>
                    <password>test</password>
                </security>
                <statement>
                    <prepared-statement-cache-size>32</prepared-statement-cache-size>
                    <share-prepared-statements/>
                </statement>
                </datasource>
            <drivers>
            <driver name="com.mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
            </driver>
    </drivers>

【问题讨论】:

【参考方案1】:

您需要创建 MySQL 驱动模块。 如果你像这样创建它,JBoss 7 将能够使用:

    下载驱动(jar 文件) 在您的服务器路径中创建目录:$jboss-home/modules/com/mysql/main 并在此处粘贴驱动程序 jar 文件 在同一文件夹中创建新文件 module.xml 在该 module.xml 中插入以下代码(如果您的 jar 文件名为 mysql.jdbc.jar):
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
    <resources>
        <resource-root path="mysql.jdbc.jar"/>  
    </resources>
    <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    </dependencies>
</module>

确保您的 mysql.jdbc.jar 的依赖项正常。

JBoss 7 不再使用 -ds.xml。 您已经在standalon.xml 中为您的数据库进行设置,这是正确的方法。 只要确保您的迁移是正确的。我看你有不同的用户名和密码...

编辑1:

我不知道 hibernate 如何与 JBoss 7 一起工作。

但我认为您应该尝试更改您的 persistence.xml

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

<property name="hibernate.connection.driver_class" value="com.mysql"/>

因为您使用 com.mysql 作为模块名称。否则,您可以将模块名称更改为 com.mysql.jdbc.Driver。

在你的standalone.xml中 改变

<driver>mysql-connector-java-5.1.0-bin.jar</driver>

<driver>com.mysql</driver>

因为您将 com.mysql 作为驱动程序的名称:

<driver name="com.mysql" module="com.mysql">

【讨论】:

感谢您的帮助,我有这些文件只是不在正确的部分,我现在将它们放在您指定的目录中,我仍然收到错误,我如何确保依赖关系mysql.jdbc.jar 可以吗? 您的服务器日志显示什么? postgres 驱动程序类似于: INFO [org.jboss.as.connector.subsystems.datasources] JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 8.4) 我认为 MySQL 驱动程序应该类似。 您可以通过在互联网上搜索来确保mysql.jdbc.jar的依赖关系正常。如果缺少某些内容,服务器日志中可能还会有提示。先试试我建议的。 感谢您的帮助,按照您的指示解决了我所有的问题。再次感谢您的帮助!

以上是关于JBOSS 7 MYSQL 缺少依赖项错误的主要内容,如果未能解决你的问题,请参考以下文章

JBoss 7 缺少 jboss.naming.context.java - 无法运行 EAR

错误:缺少依赖项:包 ambari-server-1.7.0-169.noarch 需要 python >= 2.6

dll 缺少对 Windows 7 文件的依赖项

Cordova 构建错误:相机插件缺少 android.support.v4 库依赖项

缺少文件或程序集 MySql.Data 或依赖项

Worldwind 缺少依赖项