首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAR中的beans.xml导致java.lang.NoClassDefFoundError: javax.faces.component.behavior.Behavior

JAR中的beans.xml导致java.lang.NoClassDefFoundError: javax.faces.component.behavior.Behavior
EN

Stack Overflow用户
提问于 2015-04-07 03:30:11
回答 1查看 619关注 0票数 0

我使用的是Websphere 8.5及其内部Java框架,即用于DI的Apache和用于查看的Apache。我还有一个JAR,里面有一些带有"@Named“注释的bean(所以,它们是OpenWebBeans托管bean)。这个JAR位于我的web应用程序的"WEB-INF/lib“目录和应用程序的类路径中。

有人告诉我,我应该在每个JAR中放一个"beans.xml“文件,我希望CDI实现能够找到和管理bean。我就这样做了(在应用程序的META-INF文件夹和JAR的同一文件夹中都有一个"beans.xml“文件),并且在Tomcat7中一切都工作得无懈可击(我可以在JSF页面上访问我的bean,所有的东西都被注入并解决,没有任何问题,等等)。我在应用程序的“Web -INF/ MyFaces”中使用Apache Open WEB Beans 1.2和lib 2.0jar运行Tomcat。

现在,问题来了:在Websphere中,使用相同的配置(没有应用程序的"WEB-INF/lib“中的框架JAR,只是我的bean的JAR),每次我试图加载页面(没有页面加载,顺便说一下)时,我都会得到一个引用JSF类的NoClassDefFoundError "javax.faces.component.behavior.Behavior”。奇怪的是,当我从应用程序和JAR中删除所有"beans.xml“文件时,一切都像预期的那样工作(当然,除了OpenWebBeans bean加载和管理,因为没有"beans.xml”)。

我到处找这个问题,但找不到任何线索。我知道这个类对websphere是可用的,因为我搜索了服务器JAR并在"WEBSPHERE_INSTALL\plugins\javax.j2ee.jsf.jar“找到了它(而且因为如果没有"beans.xml",就会找到这个类,一切都会正常工作),但是我不知道为什么当应用程序的类加载器中存在任何”beans.xml“文件时,这个JAR不会被加载。有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-09 05:05:10

WebSphere在WAR中确实需要一个WEB-INF/beans.xml文件!否则WAS不会“激活”CDI。这实际上并不是规范所要求的,但是添加这个文件至少是不被禁止的。它将简单地将所有类放入WEB-INF/classes CDI bean中。只将META-INF/beans.xml放在一些jars中是没有用的。

这就是WAS的工作方式,一旦你知道这是一件微不足道的事情。我甚至没有费心去创建一个PMR ;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29478228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档