`
yourenyouyu2008
  • 浏览: 286068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

classloader常见问题总结

阅读更多

看到一些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

分享到:
评论
2 楼 huang882088 2013-08-02  
jboss的war发布到tomcat里报这个错误怎么办?
1 楼 panshunchang 2013-07-09  
还有一种可能,真的缺这个jar包,在tomcat lib目录下找到el-api.jar 放到web-info的lib下就可以了

相关推荐

    classloader 总结

    这篇博文主要总结了关于Java类加载器的一些核心概念、工作原理以及常见应用场景。 1. 类加载器层次结构 Java类加载器形成了一个树形的层次结构,其中Bootstrap ClassLoader(引导类加载器)位于顶层,负责加载JRE...

    Java中ClassLoader类加载学习总结

    Java中ClassLoader类加载学习总结 ClassLoader类加载是Java语言的一种创新,目的是为了将类的加载过程与虚拟机解耦,达到”通过类的全限定名来获取描述此类的二进制字节流“的目的。类加载器的基本模型就是双亲委派...

    webshpere classloader 原理

    ### WebSphere ClassLoader原理 #### 一、概述 在探讨WebSphere Application Server v6中的ClassLoaders之前,我们首先简要回顾一下ClassLoaders的基本概念及其在Java虚拟机(JVM)中的作用。 **ClassLoaders**是...

    Java_ClassLoader详解

    通过上述分析,我们对 Java 中的类加载机制有了更深入的理解,这对于解决常见的 `ClassNotFoundException` 和 `NoClassDefFoundError` 等异常问题非常有帮助。同时,合理地利用类加载器可以提高应用程序的灵活性和...

    java常见异常总结

    ### Java常见异常总结 在Java开发过程中,遇到各种异常是在所难免的。为了更好地理解和处理这些异常,本文将详细介绍几种常见的Java异常类型及其处理方法。 #### 1. `java.lang.NullPointerException` - **异常...

    详解Android类加载ClassLoader

    自定义ClassLoader在Android开发中并不常见,但有时为了实现动态加载或者热修复等功能,开发者可能需要创建自己的ClassLoader。自定义ClassLoader时,需要重写`loadClass()`、`findClass()`等方法。例如,`loadClass...

    Java常见问题排查

    ### Java常见问题排查 #### NoSuchMethodException **出现原因:** `NoSuchMethodException`...以上是对Java常见问题的一些总结和建议,希望对您有所帮助。对于每种情况,还需要结合具体的场景进行深入分析和解决。

    Java常见异常和错误总结

    以上总结了Java编程中常见的异常和错误类型,以及如何识别和处理这些问题。对于开发者而言,理解这些异常的含义及其解决方法至关重要,这不仅能帮助提高代码质量,还能增强程序的健壮性和稳定性。

    Java 类加载机制 ClassLoader Class.forName.pdf

    深入理解类加载机制不仅有助于我们更好地理解JVM的工作原理,还能够帮助我们在实际开发中解决一些复杂的问题,比如动态加载类、热部署等。 #### 二、类加载过程 ##### 2.1 类加载的基本步骤 类加载过程可以分为...

    常见JAVA异常总结

    ### 常见JAVA异常总结 #### 1. `java.lang.NullPointerException` `java.lang.NullPointerException` 是一种运行时异常,表示程序试图在需要对象的地方使用了 `null`。例如,通过对 `null` 引用调用实例方法或访问...

    高手总结的9种OOM常见原因及解决方案.docx

    JavaOutOfMemoryError解决方案总结 Java中的OutOfMemoryError(OOM)是一种常见的错误,它发生在JVM内存严重不足时。...通过了解常见的原因和解决方案,可以更好地解决OOM问题,提高系统的稳定性和性能。

    Java Classloading Mechanism : ClassLoader & ASM & 动态字节码增强

    总结起来,Java的类加载机制保证了程序的稳定运行,而ASM库则提供了对字节码的直接操作能力,使得我们能够在运行时动态地修改类的行为。掌握这两者,开发者可以更好地理解和定制Java应用的运行过程,提升程序的灵活...

    java常见笔试题目总结

    ### Java常见笔试题目总结 #### 1. `super()`与`this()`的区别? - **`super()`**:在子类的构造方法中调用父类的构造方法,必须作为第一行代码出现。它用于初始化继承自父类的成员变量。 - **`this()`**:在同一...

    Java新手上路常见问题

    ### Java新手上路常见问题详解 #### 一、类路径(ClassPath) 对于初学者来说,在开始编写Java程序时经常会遇到一些基本但又重要的概念,其中之一就是类路径(ClassPath)。当你满怀期待地安装好Java环境,并尝试...

    Core Java面试重点知识总结

    【Core Java面试重点知识总结】 在Java开发领域,掌握Core Java的基本概念和技术是至关重要的,尤其是在面试环节。本文将深入探讨Core Java中的JVM架构及其关键组成部分,包括类装载器、执行引擎、运行时数据区域...

    ClassLoaderTest:测试如何正确关闭类加载器,以便可以关闭基础jar文件上的文件句柄

    关闭类加载器的一个常见问题是,当我们动态加载了jar文件中的类后,jar文件会被一个JarFile对象打开,这个对象持有对文件的句柄。如果不正确关闭,这个句柄将持续占用,导致资源泄漏。因此,我们需要在适当的时候...

    系统稳定性——Dubbo 常见错误及解决方法1

    在实际使用过程中,可能会遇到各种错误,本文将针对这些常见问题进行深入剖析,并提供相应的解决方案。 1. **地址找不到:No provider available** 当服务消费者无法找到服务提供者时,可能是由于服务提供者未启动...

    Java 基础核心总结 +经典算法大全.rar

    Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 枚举和普通类-样枚举神秘之处 枚举类 I/O File 类 基础 IO 类和相关方法InputStream OutputStream Reader 类Writer 类 InputStream 及其子类 ...

    阿里巴巴面试题总结

    ### 阿里巴巴面试题总结之JVM深入解析 #### 一、JVM中类的生命周期 在Java虚拟机(JVM)中,一个类从加载到卸载的整个生命周期可以分为以下七个阶段: 1. **加载(Loading)**: - 类加载器通过全名获取定义此类的...

Global site tag (gtag.js) - Google Analytics