看到一些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
分享到:
相关推荐
这篇博文主要总结了关于Java类加载器的一些核心概念、工作原理以及常见应用场景。 1. 类加载器层次结构 Java类加载器形成了一个树形的层次结构,其中Bootstrap ClassLoader(引导类加载器)位于顶层,负责加载JRE...
Java中ClassLoader类加载学习总结 ClassLoader类加载是Java语言的一种创新,目的是为了将类的加载过程与虚拟机解耦,达到”通过类的全限定名来获取描述此类的二进制字节流“的目的。类加载器的基本模型就是双亲委派...
### WebSphere ClassLoader原理 #### 一、概述 在探讨WebSphere Application Server v6中的ClassLoaders之前,我们首先简要回顾一下ClassLoaders的基本概念及其在Java虚拟机(JVM)中的作用。 **ClassLoaders**是...
通过上述分析,我们对 Java 中的类加载机制有了更深入的理解,这对于解决常见的 `ClassNotFoundException` 和 `NoClassDefFoundError` 等异常问题非常有帮助。同时,合理地利用类加载器可以提高应用程序的灵活性和...
### Java常见异常总结 在Java开发过程中,遇到各种异常是在所难免的。为了更好地理解和处理这些异常,本文将详细介绍几种常见的Java异常类型及其处理方法。 #### 1. `java.lang.NullPointerException` - **异常...
自定义ClassLoader在Android开发中并不常见,但有时为了实现动态加载或者热修复等功能,开发者可能需要创建自己的ClassLoader。自定义ClassLoader时,需要重写`loadClass()`、`findClass()`等方法。例如,`loadClass...
### Java常见问题排查 #### NoSuchMethodException **出现原因:** `NoSuchMethodException`...以上是对Java常见问题的一些总结和建议,希望对您有所帮助。对于每种情况,还需要结合具体的场景进行深入分析和解决。
以上总结了Java编程中常见的异常和错误类型,以及如何识别和处理这些问题。对于开发者而言,理解这些异常的含义及其解决方法至关重要,这不仅能帮助提高代码质量,还能增强程序的健壮性和稳定性。
深入理解类加载机制不仅有助于我们更好地理解JVM的工作原理,还能够帮助我们在实际开发中解决一些复杂的问题,比如动态加载类、热部署等。 #### 二、类加载过程 ##### 2.1 类加载的基本步骤 类加载过程可以分为...
### 常见JAVA异常总结 #### 1. `java.lang.NullPointerException` `java.lang.NullPointerException` 是一种运行时异常,表示程序试图在需要对象的地方使用了 `null`。例如,通过对 `null` 引用调用实例方法或访问...
JavaOutOfMemoryError解决方案总结 Java中的OutOfMemoryError(OOM)是一种常见的错误,它发生在JVM内存严重不足时。...通过了解常见的原因和解决方案,可以更好地解决OOM问题,提高系统的稳定性和性能。
总结起来,Java的类加载机制保证了程序的稳定运行,而ASM库则提供了对字节码的直接操作能力,使得我们能够在运行时动态地修改类的行为。掌握这两者,开发者可以更好地理解和定制Java应用的运行过程,提升程序的灵活...
### Java常见笔试题目总结 #### 1. `super()`与`this()`的区别? - **`super()`**:在子类的构造方法中调用父类的构造方法,必须作为第一行代码出现。它用于初始化继承自父类的成员变量。 - **`this()`**:在同一...
### Java新手上路常见问题详解 #### 一、类路径(ClassPath) 对于初学者来说,在开始编写Java程序时经常会遇到一些基本但又重要的概念,其中之一就是类路径(ClassPath)。当你满怀期待地安装好Java环境,并尝试...
【Core Java面试重点知识总结】 在Java开发领域,掌握Core Java的基本概念和技术是至关重要的,尤其是在面试环节。本文将深入探讨Core Java中的JVM架构及其关键组成部分,包括类装载器、执行引擎、运行时数据区域...
关闭类加载器的一个常见问题是,当我们动态加载了jar文件中的类后,jar文件会被一个JarFile对象打开,这个对象持有对文件的句柄。如果不正确关闭,这个句柄将持续占用,导致资源泄漏。因此,我们需要在适当的时候...
在实际使用过程中,可能会遇到各种错误,本文将针对这些常见问题进行深入剖析,并提供相应的解决方案。 1. **地址找不到:No provider available** 当服务消费者无法找到服务提供者时,可能是由于服务提供者未启动...
Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 枚举和普通类-样枚举神秘之处 枚举类 I/O File 类 基础 IO 类和相关方法InputStream OutputStream Reader 类Writer 类 InputStream 及其子类 ...
### 阿里巴巴面试题总结之JVM深入解析 #### 一、JVM中类的生命周期 在Java虚拟机(JVM)中,一个类从加载到卸载的整个生命周期可以分为以下七个阶段: 1. **加载(Loading)**: - 类加载器通过全名获取定义此类的...