class file has wrong version 49.0, should be 48.0 问题以及Unsupported major.minor version 49.0

有时候会遇到版本不匹配的问题。错误如下:
bad class file: C:/Program Files/Java/jre1.5.0_11/lib/rt.jar(java/lang/Object.class)
class file has wrong version 49.0, should be 48.0
Please remove or make sure it appears in the correct subdirectory of the classpath.

出现这个错误的是因为 tomcat/common/lib/ 目录底下tools.jar 的版本, 和Tomcat 选择的 JVM 的版本不一致所造成.
由于 Tomcat/common/lib/ 目录底下tools.jar 的版本是 1.4, 而 Tomcat 却选择 1.5 版本的 JVM.
所以会出现
"class file has wrong version 49.0, should be 48.0" 的 error message.
当中 49.0 即是指 Java 的 1.5 版本, 而 48.0 是指 Java 的 1.4 版本.
 
那为什么会出现 tools.jar 的版本和 JVM 的版本不符的情况呢?
首先要说明, 于 tomcat/common/lib/ 目录底下的那个 tools.jar 其实不是 tomcat 原本有的. 其实那是当你安装 Tomcat 时, Tomcat 从你指定的 JDK 目录底下的 lib 目录抄过去的.
这个 tools.jar 有何用处? 那其实是 JDK 本身附有的jar档, 是用来方便我们写 Java 程序的 (eg. 方便编译 Java). 举例说, 平时我们用的 javac 命令, 其实本身就是一个由 java 写成的程序, 而那正正就是于 tools.jar里面.
那为什么 Tomcat 需要将 JDK 的 tools.jar 抄去自己那里? 那是因为 Tomcat 需要用 tools.jar 裡面的 javac 程序, 去编译我们写好的 JSP 档桉.
可是, 编译的时候, 也需要 Java 程序本身需要的 library (class files) 才可以. 那么 Tomcat 到哪里去找那这些 library 呢? 到哪里找, 其实是取决于Tomcat 本身选定哪个 JVM, 而这个我们是可以自行到 Tomcat Configure里的 Java 版面里设定的. Tomcat 是会到你所设定的那个 JVM 所属的那个 JRE 目录底下的 lib 目录找 library, 亦即是那个 rt.jar 档桉 (Java 的 library 是在里面的).
 
但有时候修改后,tomcat在eclipse下启动和startup.bat启动时正常,用tomcat.exe启动时却又出现这错误了
这个原因是因为你一台机子上装了两个不同的JDK版本,而系统默认当前版本是更高的1.5版本
而tomcat.exe启动时使用的就是系统设置的版本了,也就是1.5了,所以就要将当前版本改为1.4版本的
在注册表中修改:
HEKY_LOCAL_MACHINE-->SOFTWARE-->JavaSoft-->Java Runtime Environment 中的CurrentVersion改为1.4版本的
重启就OK了
 
关于错误Unsupported major.minor version 49.0
原因是JDK1.5编译的内容放到了JDK1.4等低版本下
设置
「Window」->「Preferences」->「Java」->「Compiler」->「JDK Compliance level」->「1.4」
  即:
「窗口」->「首选项」->「Java」->「编译器」->「编译器一致性级别」->「1.4」
重新编译发布,OK搞定!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unsupported major.minor version是一个Java编译版本不兼容的错误。它表示当前的Java运行环境的版本低于程序编译时所使用的Java版本。例如,如果你使用JDK 1.8编译了一个程序,但在运行时使用的是JDK 1.7,就会出现Unsupported major.minor version的错误。 解决这个问题的方法有以下几种: 1. 更新Java版本:如果你的程序是用较新的Java版本编译的,那么你需要确保你的运行环境也是相应的较新版本。可以升级你的Java运行环境到与编译版本相匹配的版本。 2. 降低Java版本:如果你无法升级你的Java运行环境,那么你可以重新编译你的程序,使用与运行环境相匹配的较旧的Java版本进行编译。 3. 检查依赖库:有时候Unsupported major.minor version错误是由于程序依赖的第三方库使用了较新的Java版本而引起的。你可以检查你的程序使用的所有依赖库,并确保它们与你的运行环境兼容。 在Linux环境中,你可以通过检查系统安装的JDK版本来解决Unsupported major.minor version错误。如果你的系统安装的JDK版本低于程序编译时使用的版本,你可以升级JDK版本来解决问题。 在Windows环境中,如果你使用Eclipse运行项目时遇到Unsupported major.minor version错误,你需要检查项目的JDK版本设置。确保项目的JDK版本与项目中使用的所有jar包的运行JDK版本匹配。你可以在Eclipse中更改项目的JDK版本来解决此问题。 总结来说,要解决Unsupported major.minor version错误,你需要确保编译和运行环境的Java版本是兼容的,并检查项目的依赖库以确保它们与运行环境兼容。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值