这里有完整的错误:
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的地方:
当我的字节码版本低于运行代码的1.6整整一级时,我完全理解为什么FileNameUtils 2.2(甚至1.6)会抛出错误的主要版本错误。
我也尝试过构建,重建和重新导入Maven依赖项!我希望有人可以帮我解决这个问题。
答案 0 :(得分:0)
这对我有用。我在IntelliJ中的工件配置仍在拉动我之前使用过的更新的依赖版本。我意识到我需要降级某些依赖项的版本,所以我更新了我的pom.xml。不知何故,工件在编译时没有刷新的依赖版本。
我从IntelliJ配置中删除了现有的工件,并且这次执行了maven目标。这有助于提取所有依赖项的正确版本。