struts的web项目发布到Jboss服务器上出现java.lang.ClassCastException

LegendAniu 2009-12-28 06:29:02
今天做一个struts的web小项目发布到JBoss 4.0上出现了
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
at com.sun.faces.config.WebConfiguration.getInstance(WebConfiguration.java:154)
....
....
....
....
....
....
我就上网查啊 查到几个说是包的问题
由jsf版本引起的,删除lib下的两个JSF相关的包jsf-impl.jar和jsf-api.jar
开始我删除了又出现ClassNotFundExceptions
我继续goole看到一个英文的论坛上又关这个错误的解决方法就是把jboss目录下
的\server\default\deploy\jboss-web.deployer\conf里的web.xml里的
<listener>
<listener-class>org.jboss.web.jsf.integration.config.JBossJSFConfigureListener</listener-class>
</listener>

<listener>
<listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class>
</listener>
删除或者注释掉,试了下果然行,但是我不知道原因,而且这样改了会不会影响其他项目。
小鸟英文水平有限,看不明白他的解释,他的原文是这样的
-----
This is the original post
----


Error running JSF with Jboss
Error: The specified InjectionProvider implementation 'org.jboss.web.jsf.integration.injection.JBossDelegatingInjectionProvider' does not implement the InjectionProvider interface.

Solution:
You need to remove the bundled JSF implementation. To do so you need to comment/remove the following from the web.xml found under jboss-4.2.0.GA\server\\deploy\jboss-web.deployer\conf.

Under jboss 5.0.0GA jboss-5.0.0.GA\server\default\deployers\jbossweb.deployer\web.xml

<!-- Comment/Remove this -->
<!-- Configures JSF for a web application if the javax.faces.webapp.FacesServlet is declared -->
<!-- in web.xml. -->
<!--
<listener>
<listener-class>org.jboss.web.jsf.integration.config.JBossJSFConfigureListener </listener-class>
</listener>
-->
<!-- Comment/Remove this -->
<!-- Listens to all web app lifecycle events so that @PreDestroy can be called on -->
<!-- JSF managed beans that go out of scope. You can comment this out if you -->
<!-- don't use JSF or you don't use annotations on your managed beans. -->
<!--
<listener>
<listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class>
</listener>
-->
哪位大牛能说说这是为什么,或者又其他的解决办法
...全文
558 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidChou 2011-02-12
  • 打赏
  • 举报
回复
我也遇到了相同的问题,网上看了很多都说删掉那两个jsf相关的jar,但是删了又报ClassNotFound:com.sun.....晕死,看了你这个帖子,注释了两个listener,果然可以了,就是也不明白对其他项目有没有影响!
不能飞的肥燕 2009-12-29
  • 打赏
  • 举报
回复
通常我们区别两个类是根据包名,比如 com.hp.Person和Com.hp1.Person 尽管类名相同,但是包名不同,所以是不同的类。
事实上,我们还需要根绝jarfile是否相同来区分的。
但是如果遇到两个不同的package,但是它们都有一个类: com.hp.Person
事实上这两个类是不同的。
估计lz遇到的就是这个问题。
第一章 安装配置开发环境 18 1.1系统需求 18 1.2 JDK 的下载,安装和配置(可选) 18 1.2.1下载JDK 18 1.2.2 安装JDK 23 1.2.3 配置环境变量(可选) 24 1.2.4 JDK 6 中文文档下载地址(ZIP,HTML,CHM)(可选) 26 1.3 Tomcat服务器的下载,安装和运行(可选) 26 1.4 JBoss 服务器的下载,安装和运行(可选) 28 1.5 MySQL 5数据库服务器下载,安装和运行(可选) 31 1.5.1 MySQL 5 官方版本的下载和安装,运行 32 1.5.2 MySQL 5绿色版的下载安装和运行 32 1.5.2.1 下载 32 1.5.2.2 用法图解 33 1.6 Eclipse 3.3的下载,安装和运行 35 1.7 MyEclipse 6的下载,安装和运行 37 1.7.1下载 37 1.7.2 安装 38 1.7.2.1 ALL in ONE 版本的安装 38 1.7.2.2 插件(PLUG-IN) 版本的安装 39 1.7.2.3 使用ALL In ONE 版本制作MyEclipse绿色版 40 1.7.3 运行 41 1.8 Eclipse运行出错的疑难解答 41 1.9 使用高级进程管理器来管理Java进程 44 1.10小结 45 第二章 开发第一个Java应用程序 46 2.1 介绍 46 2.2 手工编写,编译并运行Java程序 46 2.3 使用Eclipse/MyEclipse来编写,编译并运行Java程序 47 2.4小结 50 第三章 Eclipse 的基础概念,配置和使用 51 3.1界面布局 51 3.1.1菜单 51 3.1.2 工具栏 51 3.1.3 透视图(Perspective)切换器 52 3.1.4 视图(View) 53 3.1.5 上下文菜单(Context Menu) 55 3.1.6 状态栏(Status Bar) 55 3.1.7 编辑器(Editor) 55 3.2 常见概念和操作 56 3.2.1 项目(Project) 56 3.2.2工作区(Workspace) 56 3.2.3 导入、导出Java项目 56 3.2.3.1 导入项目 56 3.2.3.2 导出项目 57 3.2.4快速修正代码错误 57 3.2.5优化导入列表 58 3.2.6添加,修改,删除JRE 58 3.2.7查看类定义,层次和源码 58 3.2.8查找类文件(Open Type) 59 3.2.9源码目录,输出路径,Library和编译器版本设置 59 3.2.10生成getter和setter 方法 60 3.2.11格式化源代码 61 3.2.12注释和取消注释 61 3.2.13手工和自动编译 61 3.2.14直接粘贴Java源码为类文件 61 3.2.15复制项目中的文件 61 3.2.16断点和调试器 62 3.2.17快速加入、删除jar包到Build Path 63 3.2.18查看当前类被哪些类引用 63 3.2.19设置编辑器字体,颜色和显示行号 63 3.2.20 Link文件 64 3.2.21安装插件 65 3.2.22获取帮助和阅读帮助文档 65 3.2.23 CVS团队源代码管理(在线阅读) 66 3.2.24 修改文件的字符编码 66 3.3小结 66 第四章 用MyEclipse Database Explorer管理数据库 67 4.1功能一览 67 4.2使用MyEclipse Database Explorer透视图 69 4.2.1介绍 69 4.2.2连接到MyEcipse Derby数据库 70 4.2.3切换到MyEclipse Database Explorer透视图 70 4.2.4打开数据库连接 71 4.2.5关闭数据库连接 72 4.2.6浏览数据库结构 72 4.2.7编辑和执行SQL代码段 73 4.2.8生成实体关系(ER)图 75 4.2.9编辑表格数据 76 4.2.10清空表格数据 77 4.2.11创建和删除表格 77 4.2.12创建和删除外键 78 4.2.13创建和删除索引 79 4.2.14生成SQL语句 80 4.2.15建立到MySQL数据库的连接 81 4.3小结 82 4.4参考资料 82 第五章 开发JDBC应用 83 5.1系统需求 83 5.2创建数据库表格 83 5.3创建Java项目 84 5.4添加JDBC驱动到Build Path 85 5.5编写JDBC访问类 85 5.6小结 89 5.7参考资料 89 5.7.1 网页 89 5.7.2 JDBC 要点 89 第六章 管理应用服务器 95 6.1简介 95 6.2 Servers 视图 95 6.3浏览应用服务器连接器 96 6.4配置连接器 97 6.4.1第1步 配置服务器的安装信息 98 6.4.2第2步 启用连接器 98 6.4.3第3步 选择启动服务器时候所用的JDK 98 6.4.3.1可选操作:添加 JVM 99 6.5发布并运行Java EE项目 100 6.5.1 Java EE 项目的发布类型 100 6.5.1.1 散包发布 100 6.5.1.2 打包发布 100 6.5.2向服务器发布应用 100 6.5.2.1打开发布对话框 100 6.5.2.2点击Add按钮启动新建发布对话框并完成发布 102 6.6应用服务器的管理和调试 103 6.6.1启动服务器 103 6.6.2监控服务器启动过程 103 6.6.3停止服务器 103 6.6.4调试发布的企业应用 104 6.7小结 104 6.8 参考资料 104 第七章 开发Hibernate应用 105 7.1介绍 105 7.2 Hibernate 一览 105 7.2.1简介 105 7.2.2 Hibernate要点 106 7.3准备工作 112 7.4创建 HibernateDemo 项目 112 7.4.1创建表格 112 7.4.2创建 HibernateDemo Java Project 113 7.4.3添加 Hibernate Capabilities 到现有项目 114 7.4.4 使用Hibernate配置文件编辑器修改文件 118 7.4.5 使用反向工程快速生成Java POJO类,映射文件和DAO 120 7.4.6 调整生成的hbm文件 132 7.4.7 编写测试代码 133 7.5 MyEclipse Hibernate工具的高级部分 135 7.5.1 反向工程向导的完整说明 135 7.5.2 使用HQL编辑器 138 7.6 小结 140 7.7参考资料 141 第八章 开发Web应用 142 8.1介绍 142 8.2 Web项目和术语 142 8.2.1 Java EE 中的Web项目结构 142 8.2.2 MyEclipse Web 项目介绍 144 8.3 创建Web项目 144 8.4 创建HTML页面 146 8.5 创建JSP页面 148 8.6 创建Servlet 150 8.7 创建Filter(过滤器) 152 8.8 创建数据库访问层(DAO) 155 8.9 修改Servlet调用后台类 158 8.10 发布,重新发布,运行和测试应用 159 8.11 调试JSP应用 160 8.12 向现有Web项目添加Web开发功能 161 8.13高级设置 161 8.13.1修改Web项目的默认设置 161 8.13.2给Web项目加入高级功能 162 8.14 常见问题 163 8.15 小结 163 8.16 参考资料 164 相关网页 164 Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置文件编辑器 171 9.3.2 Struts组件向导 173 9.4编写登录应用 175 9.4.1 应用的流程和目标 175 9.4.2 创建登录成功页面 175 9.4.3 使用新建Form,Action和JSP的向导创建关键组件 176 9.4.4 调整生成的代码 180 9.4.5 发布,运行并测试 183 9.4.6 练习题:如何用JDBC实现登录? 184 9.5 编写Struts整合Hibernate的分页应用 184 9.5.1 分页应用的设计思路 184 9.5.2 创建StrutsPageDemo项目,加入Hibernate开发功能 190 9.5.3 反向工程生成DAO层 190 9.5.4 编写分页应用层 191 9.5.5 加入Struts表现层和控制层 192 9.5.6发布,运行并测试 196 9.5.7 练习:如何用Hibernate+Struts实现修改用户信息功能? 196 9.6 小结 197 9.7 参考资料 197 第十章 开发Spring应用 198 10.1 简介 198 10.1.1 Spring简介 198 10.1.2 MyEclipse的Spring开发功能简介 200 10.2 开发简单的Spring应用 200 10.2.1 给项目加入Spring功能 200 10.2.2 创建Bean类和配置信息 202 10.2.3 Spring Beans 视图和Outline视图 206 10.2.4 运行和测试 208 10.2.5 如何加载多个Spring配置文件 210 10.3 开发Spring 1.2 AOP应用 211 10.3.1 开发Man对象 211 10.3.2 开发前置通知(Before advice)对象:FBI 212 10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签实现AOP 219 10.4.2 使用标注(@AspectJ)实现AOP 221 10.4.3 开发环绕通知(Around Advice)AOP 应用 223 10.5 Spring数据库开发 227 10.5.1 DataSource 和 JDBCTemplate开发 227 10.5.2 Hibernate 整合 Spring开发 236 10.5.2.1 创建项目,添加必要的开发功能 236 10.5.2.2 反向工程生成Spring整合Hibernate的DAO 238 10.5.2.3 用Spring 1.2 的事务代理类解决事务提交问题 245 10.5.2.4 用Spring 2.0 的aop和tx声明式配置解决事务提交问题 247 10.5.2.5 用Spring 2.0 的@Transactional标注解决事务提交问题(最佳方案) 251 10.5.2.6 使用 HibernateTemplate 实现分页查询 254 10.6 小结 255 10.7 参考资料 255 10.7.1 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法 255 10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 258 10.7.3 Spring相关的参考资料 261
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses

6,787

社区成员

发帖
与我相关
我的任务
社区描述
JBoss技术交流
社区管理员
  • JBoss技术交流社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧