在pom中包含依赖项时的ClassClassException

时间:2015-03-23 09:54:39

标签: jboss maven-3 camunda

我使用JBoss开发应用程序。

我创建了一个新模块CAMUNDA_HOME\server\jboss-as-7.2.0.Final\modules\org\camunda\bpm\identity\camunda-identity-dbldap\main

该文件夹包含2个文件: camunda-identity-dbldap-7.2.0.jar& module.xml:

<module xmlns="urn:jboss:module:1.0" name="org.camunda.bpm.identity.camunda-identity-dbldap">
  <resources>
    <resource-root path="camunda-identity-dbldap-7.2.0.jar" />
  </resources>

  <dependencies>

    <module name="sun.jdk" />

    <module name="javax.api" />
    <module name="org.camunda.bpm.camunda-engine" />
    <module name="org.camunda.bpm.identity.camunda-identity-ldap" />

  </dependencies>
</module>

我在pom.xml中包含了“camunda-identity-dbldap”。

    <dependency>
        <groupId>org.camunda.bpm.identity</groupId>
        <artifactId>camunda-identity-dbldap</artifactId>
        <version>${camunda-version}</version>
    </dependency>

DbAndLdapIdentityProviderFactory存在于“camunda-identity-dbldap.jar”中,也可以加载到pom中。

我试图在我的项目中投射课程。

    ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl)ProcessEngines.getDefaultProcessEngine().getProcessEngineConfiguration();
    DbAndLdapIdentityProviderFactory factory = (DbAndLdapIdentityProviderFactory)processEngineConfiguration.getIdentityProviderSessionFactory();
    LdapConfiguration configuration = factory.getLdapConfiguration();

不幸的是,它报告了ClassCastException,它无法将DbAndLdapIdentityProviderFactory强制转换为DbAndLdapIdentityProviderFactory。似乎在不同的类加载器中加载了两个类。如何解决?

1 个答案:

答案 0 :(得分:2)

你可能得到了CCE,因为你已经在JBoss和你自己的项目中添加了库 引擎使用JBoss中的版本,并尝试使用项目中的库将其强制转换到项目中。

解决方案是将JBoss使用的库添加到您的项目中,方法是将其声明为META-INF / MANIFEST.MF(org.camunda.bpm.identity.camunda-identity-dbldap)中的依赖项,以便JBoss加载它适合你。您必须在pom.xml中的“提供”范围内设置库。