今天一位同事在发布一个portlet到ibm portal时报错,于是叫我去帮忙。我们打开日志查看异常,是一个UnsupportedClassVersion错误,还说 Unsupported major.minor version 49.0
我虽然猜到了是class版本不兼容, 大概是用了不对应的jdk编译出不兼容的class导致的。由于was服务器是jdk1.4, 那么我就检查了他用的jdk, 果然用了1.5。
于是换用1.4,重新编译打包, 这下顺利的发布成功了。
事情到这里已经结束了, 不过我还是觉得那个major.minor version 49.0很奇怪,这个class的版本是怎么定的?49难道就是jdk1.5编译的版本号?于是搜索了一下, 还真有相关的资料,不错不错。
这篇文章写的很好,解释的很清楚。
http://www.blogjava.net/Unmi/archive/2007/12/04/165035.html
我前面猜想的jdk1.5编译出的class版本是49也没错,不过并非一定要更换jdk1.4才能搞定以上的问题, javac加上参数-target 1.4 -source 1.4 也是能搞定的。只要保证编译出来的class版本小于或等于was的jvm能支持最高版本即可。
另外还有一个有趣的新发现, 本以为如果服务器限制了jdk1.4,那么我们就不能用jdk1.5写程序了,也就不能用泛型、增强的循环这些特性了, 但这些还真就成了可能的。上文中提到的Retrotranslator 能很好帮助我们做到jdk1.5的代码跑到jdk1.4的jvm上:
http://www.blogjava.net/Unmi/articles/124166.html
有机会去试试看。
分享到:
相关推荐
Unsupported major.minor version 51.0 错误是 Java 开发中常见的一种错误,原因是 Java 类文件的版本不匹配。下面我们将详细介绍该错误的原因、解决办法以及相关的 Java 知识点。 Java 类文件版本 Java 类文件的...
Tomcat报错Unsupported major.minor version xxx的解决方法 一、问题背景 在Java开发过程中,我们经常会遇到Tomcat报错Unsupported major.minor version xxx的问题。这是因为编译的JDK版本和运行时所用的JDK版本不...
在Java编程中,"Unsupported major.minor version 51.0"是一个常见的错误,它通常发生在尝试使用较旧版本的Java虚拟机(JVM)运行由较新版本的Java编译器编译的代码时。这个错误信息表示JVM无法识别或支持编译后的...
这里我们讨论的焦点是“JDK1.5环境下编译的jar包在JDK1.4环境下运行”所遇到的问题,具体表现为“Unsupported major.minor version 49.0”的错误。这个错误的根源在于Java字节码版本不兼容。Java字节码版本与JDK版本...
JPEG库,全称为Joint Photographic Experts Group,是用于处理JPEG图像格式的标准库,而`jpeglib`是这个库的核心部分。JPEG是一种广泛使用的有损压缩算法,尤其适用于照片和其他连续色调的图像。在JPEGlib 61版本中...
Javarebel是一个Jvm插件,它能够动态重新装载Java类特性。虽然现在还有些局限性,但它可以显著地增加开发速度。JavaRebel允许一个应用程序(独立的或运行在应用服务器上的应用)重新装载在运行过程中发生的大多数类...
包含selenium-server-standalone-3.0.1.jar,selenium-java-2.53.0.jar,selenium-java-2.53.0-srcs.jar及自动化测试所需要的jar包
Caused by:xxx Unsupported major.minor version 52.0。翻译为中文:(Tomcat)不支持52.0版本的镜像 二、jdk与major.mijor version对应的关系如下 JDK 1.1 = 45 JDK 1.2 = 46 JDK 1.3 = 47 JDK 1.4 = 48 JDK 1.5 = ...
首先,理解Android资源加载机制。在Android应用中,我们通常通过`R`类来访问资源,而`R`类是在编译时自动生成的,它包含了所有资源的ID。当资源位于APK的`res`目录下时,Android系统可以自动处理这些资源。但是,...
在使用JUnit/StrutsTest时,可能会遇到java.lang.UnsupportedClassVersionError: junit/framework/TestListener (Unsupported major.minor version 49.0)错误。 解决方法:根据JDK版本选择合适的JUnit版本。如果...
资源包括: jackson-annotations-2.9.9 jackson-core-2.9.9 jackson-databind-2.9.9 Jackson 的核心模块由三部分组成。 jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator...
其次,如果选择J2EE 1.3进行开发,可能会遇到“Unsupported major.minor version 49.0”的错误,这是由于WebLogic 8不支持JDK 1.5导致的。为了解决这个问题,你可以选择使用JDK 1.4重新编译项目,或者升级WebLogic到...
3. **Unsupported major.minor version 错误**:这个错误通常发生在尝试用一个较新版本的JDK编译的类文件在旧版本的JVM上运行时。例如,JDK 1.5编译的类文件(major_version为49)无法在JVM 1.4或更早版本上运行,...
3:如果出现 Unsupported major.minor version 52.0 则表示该文件的版本与本地的jdk版本不匹配 经测试 jdk1.7.0使用1.05版本的AndroidKeystore jdk1.8.0使用1.07版本的AndroidKeystore (资源里面两个版本的都有) ...
3:如果出现 Unsupported major.minor version 52.0 则表示该文件的版本与本地的jdk版本不匹配 经测试 jdk1.7.0使用1.05版本的AndroidKeystore jdk1.8.0使用1.07版本的AndroidKeystore (资源里面两个版本的都有) ...
geohash官方发布以及maven发布的版本都是基于jdk1.7编译的,碰到jdk1.6的项目会报unsupported major.minor version 51.0错误。这个资源是我基于jdk1.6编译的,执行测试案例都通过了。
spatial4j官方发布以及maven发布的版本都是基于jdk1.7编译的,碰到jdk1.6的项目会报unsupported major.minor version 51.0错误。这个资源是我基于jdk1.6编译的,执行测试案例都通过了。
Unsupported major.minor version 49.0 ``` **错误原因:** 此错误表明Java运行环境与编译时的Java版本不兼容,通常是由于以下原因导致: 1. **编译时使用了较高版本的Java SDK,但运行环境只支持较低版本。** 2....
当我们引入的jar包和本地的jdk版本有冲突的情况下,会报一下错误:java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsupported major.minor version 51.0,所以我们需要强制给jar依赖的jdk版本...