编译时出现exception:错误的版本50.0,应该是49.0

我正在与JXL API的应用程序,当我尝试编译使用Eclipse IDE,它工作正常,同样不编译当我试图编译命令提示符,并显示下面的exception。

Extract.java:6: cannot access jxl.read.biff.BiffException bad class file: C:\Program Files\Java\jdk1.5.0_01\jre\lib\ext\jxl.jar(jxl/read/biff/BiffException.class) class file has wrong version 50.0, should be 49.0 Please remove or make sure it appears in the correct subdirectory of the classpa th. import jxl.read.biff.BiffException; ^ 1 error 

编辑:

我能够使用JDK 1.6执行。 由于JDK 1.6还必须兼容较低版本,为什么它不支持在JDK 1.5中编译的类文件。

你正在使用的库是用Java 6编译的

你的编译器是Java 5,这就是为什么它不理解这种格式。

要解决它,你必须得到一个1.5版本的库或升级你的编译器到1.6我build议以后。

根据http://www.jnode.org/node/2140

Stephen Crawley于2007年11月30日 – 07:15提交。

我怀疑你是混合使用不同版本的Java编译的代码。 Java 6.0使用类文件版本50.0,Java 5.0使用49.0。

尝试做一个“构build干净”来摆脱所有现有的类文件,然后定期构build。

JNode仅使用Java 6.0开发。 上次我尝试了,它没有使用Java 5.0(又名1.5)构build。 (这是构buildJNode引导映像的程序的问题。)

尝试更改Eclipse中的构build器。 如果你使用3.4,它是项目 – 属性 – Java编译器 – 启用项目特定设置 – 编译器符合级别= 1.6 。 你将prolly也需要安装JRE 1.6。

在eclipse中检查你的类path,并确保它在编译的命令提示符下有相同的类path,同时检查你的库的导入

这意味着,你已经用Java 6编译了这个类,并试图用Java 5来执行。

解答:

如果您使用ant ,请在项目根目录下执行以下步骤

  1. ant干净
  2. ant部署

如果你使用eclipse ,只需清理工作区(删除用Java6编译的类文件)并重新编译即可

这可能是因为在你的IDE中,你指向了最新版本的JDK,但是当你在IDE之外build立你的程序时(也许使用maven),你的java_home就是你的IDE上的旧版本。