编译时出现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 ,请在项目根目录下执行以下步骤
- ant干净
- ant部署
如果你使用eclipse ,只需清理工作区(删除用Java6编译的类文件)并重新编译即可
这可能是因为在你的IDE中,你指向了最新版本的JDK,但是当你在IDE之外build立你的程序时(也许使用maven),你的java_home就是你的IDE上的旧版本。