问题 什么版本的Maven与Java 6兼容?


我必须在一个需要运行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安装OSX错误不支持major.minor版本51.0 和 线程“main”中的异常java.lang.UnsupportedClassVersionError:a(不支持的major.minor版本51.0) 但是我不打算升级,我正在寻找与java 6兼容的maven版本。关于哪个版本兼容的哪些想法以及我可以从mac下载/安装它的哪些?


8713
2018-03-21 20:42


起源



答案:


根据 这一页,与JDK1.6一起使用的最后一个Maven版本是3.2.5。

请注意,最好继续使用较新的Maven版本(并将Java 8保留为系统路径中的默认版本),并告诉Maven它正在构建的项目应该使用源集1.6进行编译。看到 https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html 了解更多信息。恢复旧的Maven将删除较新版本的错误修复/增强功能。


15
2018-03-21 20:47



谢谢,正是我想要找到的。一旦冷却时间过去,我会接受回答。 - James Oravec
保持Java8然后编译Java6可能会导致一些问题,请检查 这个答案 关于为什么以及如何使用Maven防止运行时故障 - A_Di-Matteo
从下载 archive.apache.org/dist/maven/maven-3/3.2.5/binaries 并且可以安装类似于给出的方向 mkyong.com/maven/install-maven-on-mac-osx - James Oravec
@ A.DiMatteo有趣的帖子。据我所知,从那里的评论中可以看出,最好的办法是确保使用的API兼容(至少在此之前是JDK9)。 - manouti
@ AR.3确实,动物嗅探器插件做得很好,我在类似的场景中工作(我遇到了运行时错误而且没有乐趣我必须说:))。 Stuart Marks的评论让它有点被批准,但是,Java 9将改变游戏 - A_Di-Matteo


答案:


根据 这一页,与JDK1.6一起使用的最后一个Maven版本是3.2.5。

请注意,最好继续使用较新的Maven版本(并将Java 8保留为系统路径中的默认版本),并告诉Maven它正在构建的项目应该使用源集1.6进行编译。看到 https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html 了解更多信息。恢复旧的Maven将删除较新版本的错误修复/增强功能。


15
2018-03-21 20:47



谢谢,正是我想要找到的。一旦冷却时间过去,我会接受回答。 - James Oravec
保持Java8然后编译Java6可能会导致一些问题,请检查 这个答案 关于为什么以及如何使用Maven防止运行时故障 - A_Di-Matteo
从下载 archive.apache.org/dist/maven/maven-3/3.2.5/binaries 并且可以安装类似于给出的方向 mkyong.com/maven/install-maven-on-mac-osx - James Oravec
@ A.DiMatteo有趣的帖子。据我所知,从那里的评论中可以看出,最好的办法是确保使用的API兼容(至少在此之前是JDK9)。 - manouti
@ AR.3确实,动物嗅探器插件做得很好,我在类似的场景中工作(我遇到了运行时错误而且没有乐趣我必须说:))。 Stuart Marks的评论让它有点被批准,但是,Java 9将改变游戏 - A_Di-Matteo


如果您遇到问题需要使用JDK 6构建,但是您希望使用JDK 7运行Maven(因为您希望使用Maven 3.3+),您应该考虑使用 工具链 这使得这种相互依赖。


1
2018-03-24 08:08