我目前正在处理以下堆栈:jboss7.1.3,javaee-api和jsf 2.1.19。并且无法解决这个错误:
Unexpected exception when attempting to tear down the Mojarra runtime: java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory.
这很奇怪,因为当我不轻视战争时,问题就不会显现出来。细化战争意味着将以下配置添加到maven war插件:
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
</manifest>
</archive>
</configuration>
我希望我的所有jar都在app / lib文件夹中,这样就不会出现LinkageError。这是因为我的web项目也依赖于EJB项目。但问题是我有一个带有方法签名的基类,正由2个模块使用并抛出此错误:
java.lang.LinkageError: loader constraint violation: when resolving method "com.czetsuya.myApp.bean.MyManagedBean.getEntity()Lcom/czetsuya/myApp/model/MyEntity;" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, com/czetsuya/myApp/util/view/composite/BackingBeanBasedCompositeComponent, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for resolved class, com/czetsuya/myApp/bean/MyManagedBean, have different Class objects for the type pship/model/MyEntity; used in the signature
我的想法是在lib文件夹中为2个模块安装1个类加载器。因此,两个模块都将使用父级优先加载。
或者我的方法完全错了?有什么建议吗?
答案 0 :(得分:0)
基本上我所做的就是删除了jsf依赖项并坚持使用javaee-api。这个解决方案对我有用。依赖jsf * .jar和javaee6-api jar会产生一些难以调试的错误。