Java:JVMCFRE003糟糕的主要版本; class = org / apache / commons / io / FilenameUtils,offset = 6

时间:2018-03-25 05:18:54

标签: java intellij-idea offset apache-commons unsupported-class-version

这里有完整的错误:

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. 文件 - >项目结构 - > Modules :: Sources(Paths and Dependencies旁边) - >语言等级5
  2. 文件 - >设置 - >构建,执行,部署 - >编译器 - > Java编译器 - > Project Bytecode版本:1.5
  3. Project iml文件 - JDK 1_5
  4. Maven编译器版本 - 1.5
  5. 当我的字节码版本低于运行代码的1.6整整一级时,我完全理解为什么FileNameUtils 2.2(甚至1.6)会抛出错误的主要版本错误。

    我也尝试过构建,重建和重新导入Maven依赖项!我希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

这对我有用。我在IntelliJ中的工件配置仍在拉动我之前使用过的更新的依赖版本。我意识到我需要降级某些依赖项的版本,所以我更新了我的pom.xml。不知何故,工件在编译时没有刷新的依赖版本。

我从IntelliJ配置中删除了现有的工件,并且这次执行了maven目标。这有助于提取所有依赖项的正确版本。