这几天在用jexcelapi,去下载了最新的jexcelapi:jexcelapi_2_6_11.zip,解压后把其中的jxl.jar添加到工程类库中。做了个测试测序,遇到以下错误:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Exception in thread "main"
我的eclipse使用的JDK版本是jdk5(前几天刚因项目需要由JDK6改成了JDK5),现在我改回使用JDK6,运行的测试程序OK。
以上问题在TOMCAT(使用JDK5的)中运行时候同样出现。
我下载的jexcelapi_2_6_11.zip是JDK6版本,但是下载地址:
http://sourceforge.net/projects/jexcelapi/files/ 中没有说明。后仔细看才发现画面最下面有:
2.6.9 (Java 1.4) Subscribe Folder view
jexcelapi_2_6_9_1.4.tar.gz 1.8 MiB Tue Nov 25 2008 17:07 6,743 Release Notes
jexcelapi_2_6_9_1.4.zip 2.3 MiB Tue Nov 25 2008 17:06 33,519 Release Notes
2.6.9 (Java 1.6)
由于项目原因,我目前使用的JDK只能是1.5,重新下载2.6.9 (Java 1.4) ,无论我的集成开发环境还是TOMCAT使用的JDK是1.5或1.6,都以上问题彻底解决。
分析总结如下:
1、JDK6编译的代码在低版本JDK上运行会出现java.lang.UnsupportedClassVersionError: Bad version number in .class file问题。反之没有问题。
2、去下载jexcelapi的时候要特别注意你下载的版本所支持的JDK版本号,最新版本的通常是支持的高版本JDK。也希望以后官方下载地址中能准确标识这方面的信息。