39

我正在使用 JXL API 工作一个应用程序,当我尝试使用 eclipse IDE 编译时,它工作正常,当我尝试在命令提示符下编译并显示以下异常时,同样没有编译。

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编译的类文件呢?

4

5 回答 5

72

您使用的库是用 Java 6 编译的

您的编译器是 Java 5,这就是它不理解该格式的原因。

要修复它,您必须获得 1.5 版本的库或将编译器升级到 1.6,我建议后者。

于 2009-11-19T20:27:55.473 回答
3

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

斯蒂芬克劳利于 2007 年 11 月 30 日星期五 - 07:15 提交。

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

尝试进行“构建清理”以摆脱所有现有的类文件,然后进行常规构建。

JNode 仅使用 Java 6.0 开发。上次我尝试时,它没有使用 Java 5.0(又名 1.5)构建。(这是构建 JNode 启动映像的程序的问题。)

尝试在 Eclipse 中更改构建器。如果您使用的是 3.4,则为Project - Properties - Java Compiler - Enable Project Specific Settings - Compiler Compliance Level = 1.6。您还需要安装 JRE 1.6。

于 2009-11-19T20:28:57.077 回答
1

检查你在 Eclipse 中的类路径,并确保它与你在命令提示符下编译的类路径相同,还要检查你的库导入

于 2009-11-19T20:26:26.380 回答
1

这意味着,您已经使用 Java 6 编译了该类并尝试使用 Java 5 执行。

解决方案 :

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

  1. 蚂蚁清洁
  2. 蚂蚁部署

如果您使用 eclipse,只需清理工作区(删除使用 Java6 编译的类文件)并再次构建

于 2013-10-29T02:04:56.530 回答
0

这可能是在您的 IDE 中,您指向最新版本的 JDK,但是当您在 IDE(可能使用 maven)之外构建程序时,您的 java_home 是 IDE 上的旧版本。

于 2013-03-28T12:40:25.453 回答