【问题标题】:What Version of Maven is Compatible with Java 6?哪个版本的 Maven 与 Java 6 兼容?
【发布时间】:2016-07-08 13:27:36
【问题描述】:

我必须在一个需要运行 java 6 的旧项目中工作,因为在将来的版本中已经删除了对折旧的 sun 类的引用。作为该过程的一部分,我将系统路径中的 jdk 从 8 更改为指向 java 6 jdk。这样做后,我得到:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

这类似于Maven Installation OSX Error Unsupported major.minor version 51.0 和Exception in thread "main" java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0) 但是我不打算升级,我正在寻找与java 6 兼容的maven 版本。关于哪个版本兼容以及在哪里兼容的任何想法我可以从 for mac 下载/安装它吗?

【问题讨论】:

    标签: java maven maven-2


    【解决方案1】:

    根据the Maven release history page,最后一个支持JDK1.6的Maven版本是3.2.5。

    请注意,最好继续使用较新的 Maven 版本(并在系统路径中保留 Java 8 作为默认值),并告诉 Maven 它正在构建的项目应该在源设置为 1.6 的情况下进行编译 - 请参阅 source and target documentation 了解更多信息信息。恢复到旧 Maven 将删除新版本的错误修复/增强功能。

    【讨论】:

    • 保留 Java8 然后为 Java6 编译可能会导致一些问题,请查看 this answer 了解使用 Maven 防止运行时问题的原因和方法
    • @A.DiMatteo 有趣的帖子。据我从那里的 cmets 了解到,最好的办法是确保使用的 API 是兼容的(至少在 JDK9 出现之前)。
    • @AR.3 确实如此,而且动物嗅探器插件做得很好,我在类似的场景中使用过(我遇到了运行时错误,我必须说没有乐趣 :))。来自 Stuart Marks 的评论让人觉得它得到了认可,但是是的,Java 9 将改变游戏规则
    【解决方案2】:

    如果您有需要使用 JDK 6 构建的问题,但您希望使用 JDK 7 运行 Maven(因为您喜欢使用 Maven 3.3+),您应该考虑使用 toolchain,这使得它们彼此独立。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 2023-01-05
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多