这是完整的错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/apache/commons/io/FilenameUtils, offset=6
at java.lang.ClassLoader.defineClass(ClassLoader.java:275)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:540)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:451)
at java.net.URLClassLoader.access$300(URLClassLoader.java:79)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1038)
at java.security.AccessController.doPrivileged(AccessController.java:284)
at java.net.URLClassLoader.findClass(URLClassLoader.java:429)
at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
......
我知道这是非常常见的错误,但如果不花至少 72 小时尝试解决我的问题,我不会在这里发布问题 :)。我知道为什么会出现这个错误(我只是通过使用正确的字节码版本编译修复了其中的一堆),但这是我无法摆脱的最后一个错误。所以我的Java版本如下(是的,我知道,旧的,但是组织限制......:p)。
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr9fp2-20110627_03(SR9 FP2))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr9-
20110624_85526 (JIT enabled, AOT enabled)
J9VM - 20110624_085526
JIT - r9_20101028_17488ifx17
GC - 20101027_AA)
JCL - 20110530_01
令人惊讶的是,即使使用与 JDK 1.5 兼容的 FileNameUtils 2.2,我也会收到此错误!
我正在使用 IntelliJ 进行编译。这些是我将目标字节码版本设置为 1.5 的地方:
- 文件 -> 项目结构 -> 模块 :: 源(在路径和依赖项旁边)--> 语言级别 5
- 文件 -> 设置 -> 构建、执行、部署 -> 编译器 -> Java 编译器 -> 项目字节码版本:1.5
- 项目 iml 文件 - JDK 1_5
- Maven 编译器版本 - 1.5
当我的字节码版本比运行代码的 1.6 低一个完整级别时,我完全无法理解为什么 FileNameUtils 2.2(甚至 1.6)会引发错误的主要版本错误。
我也尝试过构建、重建和重新导入 Maven 依赖项!我希望有人能帮我解决这个问题。