Java 仅在JBoss 5.1中出现的不受支持的ClassVersionError

Java 仅在JBoss 5.1中出现的不受支持的ClassVersionError,java,jboss,classloader,java-6,Java,Jboss,Classloader,Java 6,我的应用程序包含第三方jar(com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar) 这是用Java6编译的。我设法在运行Java5的Tomcat 5.5上使用它,但当我试图在JBoss 5.1上部署相同的应用程序时,我得到了一个错误: [org.jboss.detailed.classloader.ClassLoaderManager] (主)加载过程中出现意外错误 of:testdata.SomeAnnotation java.lang.

我的应用程序包含第三方jar(com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar) 这是用Java6编译的。我设法在运行Java5的Tomcat 5.5上使用它,但当我试图在JBoss 5.1上部署相同的应用程序时,我得到了一个错误:

[org.jboss.detailed.classloader.ClassLoaderManager] (主)加载过程中出现意外错误 of:testdata.SomeAnnotation java.lang.UnsupportedClassVersionError: .class文件中的版本号错误

我意识到这不仅仅发生在我身上

我的问题:
1)为什么可以在tomcat等web服务器上使用这个jar,但它仍然困扰Jboss 5.1

2)为什么Jboss类加载器加载应用程序的Jweaver实现以用于加载it框架,而不使用Jboss aspectJ实现。也许我应该首先将其类加载配置为父类,这样可以解决这个问题?

Java是向后兼容的(Java 5.0 jar可以在Java 6上运行),但不是向前兼容的(Java 5.0上不能使用Java 6 jar)


您需要获得为Java 5.0编译的第三方Jar的副本,或者将Java版本升级到6版或更高版本。

有时,我们看到学生修改他们使用的jdk,重新配置他们的环境,但仍然会发生此异常。这可能会造成相当大的混乱,尤其是当他们从jdk1.6切换到jdk1.5时。几乎总是,罪魁祸首是一个或几个其他版本的jboss正在运行,所有传入的请求都会调用其中一个(使用最新的JAR)。我们总是检查哪些应用正在运行,并关闭所有其他版本的jboss

那么,在Tomcat上运行应用程序时,我是如何运行相同的Java6类的呢?他们使用的是同一个Java JDK(1.5)-我认为它与JBoss类加载机制有某种联系。当您在Java 6中编译jar时,您可以指定Java 5的目标,但是Java 5.0 JVM不会加载Java 6类,无论类加载器如何工作。i、 e.如果类加载器在加载类时不进行代码转换(我不知道有哪个类加载器能够做到这一点),那么类加载器就无能为力,这样做是非常不安全的。