h tp://yourenyouyu2008.iteye.com/blog/779707看到一些ClassNoFindException ,ClassCastException等异常首先应该想到是不是ClassLoader引起的。

各服务器的ClassLoader策略不同一致

同样的一个war在tomcat,jboss,weblogic等环境下不一定都能正常运行,是由于这些服务器的ClassLoader策略不完全一样,对包冲突的解决办法不一样。最好的办法是引入maven的包管理机制,根据不同的服务器生成不同的war。

java.lang.ClassCastException

Caused by: java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider
 at javax.persistence.Persistence.findAllProviders(Persistence.java:112)
 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
 at org.jboss.seam.persistence.EntityManagerFactory.createEntityManagerFactory(EntityManagerFactory.java:85)
 at org.jboss.seam.persistence.EntityManagerFactory.startup(EntityManagerFactory.java:50)

这是一个基于jpa的web项目,同样的war在tomcat下运行是没有问题的,但在jboss下却包上面的异常。这说明正常情况下HibernatePersistence 应该能转换成PersistenceProvider,不能转换的原因就是这两个类是由不同的加载器加载的。搜索jboss classloader查找解决方案,设置server\default\deploy\JBoss-web.deploy\META-INF\JBoss-service.xml 文件中的<attribute name="UseJBossWebLoader">true</attribute>.

jboss classloader

http://www.blogjava.net/agapple/archive/2008/10/23/236142.html

java.lang.ClassNotFoundException:javax.el.ELResolver

有个初学jsf的同事在tomcat下运行jsf的官方demo,总时报java.lang.ClassNotFoundException: javax.el.ELResolver异常,而同样的tomcat,demo在别人的电脑上没有一点问题,百思不得其解时从网上搜到了下面的信息:如果把jsp-api.jar  或者servlet-api.jar放入到了 jdk   /jre/lib/ext包下面就会出现  java.lang.ClassNotFoundException: javax.el.ELResolver异常,解决方法,在jre/lib/ext包下面删除那两个包就行了。原文链接http://hi.baidu.com/java_hl/blog/item/cd93202a4c9a154a4ec22660.html

一检查她的jdk/jre/lib/ext包下确实有jsp-api.jar和servlet-api.jar两个jar,删除后一切正常。

按照往常的经验是不会将jsp-api.jar和servlet-api.jar放到jdk/jre/lib/ext下面的,她说建立的项目里的import javax.servlet总是报错,网上搜索到把jsp-api.jar和servlet-api.jar放到jdk/jre/lib/ext下面,进一步发现她建立的不是web项目,而是普通的maven项目(对初学者来说太复杂了)。

常见异常

java.lang.IllegalAccessError

java.lang.IllegalAccessError: tried to access class javassist.bytecode.StackMapTable$Writer from class org.jboss.seam.util.ProxyFactory

javasist版本冲突,seam使用了低版本的javasist,而运行时使用了高版本的javasist

classloader常见问题总结的更多相关文章

  1. JBoss类加载机制 ClassLoadingConfiguration

    http://sylven.iteye.com/blog/577063 类仓库优先级从低到高 1.classpath.lib目录 2.由已部署的应用程序的所有类./server/{server_nam ...

  2. 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题

    一.概述   定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型.类加载和连接的过程都是在运行期间完成的. 二. 类的 ...

  3. 使用Powermock进行单元测试,以及常见问题的处理

    1. 引言 在进行单元测试时,经常遇到被测方法依赖外部对象和环境,如需要数据库连接,网络通信依赖等,需要进行大量的初始化工作,这时可以采用powermock+mockito对被测对象进行模拟,通过录放 ...

  4. 【转】hive简介安装 配置常见问题和例子

    原文来自:  http://blog.csdn.net/zhumin726/article/details/8027802 1 HIVE概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化 ...

  5. 【转】 hive简介,安装 配置常见问题和例子

    原文来自:  http://blog.csdn.net/zhumin726/article/details/8027802 1 HIVE概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化 ...

  6. Java编程最差实践常见问题详细说明(1)转

    Java编程最差实践常见问题详细说明(1)转     原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没 ...

  7. Java编程最差实践常见问题详细说明(2)转

    Java编程最差实践常见问题详细说明(2)转 2012-12-13 13:57:20|  分类: JAVA |  标签:java  |举报|字号 订阅     反射使用不当  错误的写法: Java代 ...

  8. Spring常见问题总结

    1. 什么是 Spring 框架? Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性.Spring 官网:https://spring.io/. 我们一般说 Sprin ...

  9. JAVA线上常见问题排查手段(小结)

    在平时开发过程中,对于线上问题的排查以及系统的优化,免不了和Linux进行打交道.每逢大促和双十一,对系统的各种压测性能测试,优化都是非常大的一次考验.抽空整理了一下自己在线上问题排查以及系统优化的一 ...

随机推荐

  1. CodeForces - 992D Nastya and a Game

    题面在这里! 显然一段区间的 mul - sum * k = 0 才合法,然鹅我们发现sum * k 对于本题的数据来说最大才是1e18,也就是说mul必须得<=1e18. 我们不妨从这里入手, ...

  2. [ARC103F]Distance Sums

    题意:有一棵树,对于每个点$i$,给出了它到其他点的距离和$i$,现在要还原这棵树,保证$d_i$两两不同 一个点从$u$移到相邻节点$v$时,若删掉$(u,v)$后$u$这边的连通块大小为$siz_ ...

  3. BigInt的实现——C++编程风格读书笔记

    C++编程风格这本书前面一些章节都觉得很简明易懂,但是读到效率这一章是才充分认识到读别人的代码还是很痛苦的一件事.书中给出的需要改进的初始类如下: class BigInt { private: ch ...

  4. <摘录>linux 默认的include

    #include <linux/module.h> 中的module.h默认是在哪个目录下呢?我在/usr/include/linux下并没有找到这个文件. 另外想问一下,不同内核版本的l ...

  5. Code Simplicity

    https://www.codesimplicity.com/post/code-simplicity-the-science-of-software-development/ 下载地址: https ...

  6. 怎么设置IDEA,去除单词拼写检查,或者添加自定义的单词

    如图所示,添加自定义的单词,这样IDEA检查的时候,就不会报错了.估计默认是根据英文单词来释义的.

  7. Spark学习视频整合

    1.<Scala深入浅出实战经典>http://pan.baidu.com/s/1pJnAUr5 2.<Spark纯实战公益大讲坛>http://pan.baidu.com/s ...

  8. ISP图像调试工程师——色彩还原(熟悉图像预处理和后处理技术)

    http://blog.sina.com.cn/s/blog_5e125dcf0100k8s3.html 色彩还原: https://wenku.baidu.com/view/123fb51a6edb ...

  9. mac office 设置默认视图显示比例

    1.打开word 2.fn+option+F11,选中Normal,右键插入模块,复制以下脚本到编辑器中 Sub AutoOpen() ActiveWindow.ActivePane.View.Zoo ...

  10. stderr重定向

    在测试alljoyn时开启了内部日志,输出太多想重定向到文件中,使用如下命令: ./chat -s aaa >.txt 居然还是打印到屏幕上而不是输出到文件中. 查看alljoyn写日志的代码, ...