哪个版本的 Maven 与 Java 6 兼容?

2022-09-02 09:48:54

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


答案 1

根据Maven发布历史页面,最后一个与JDK1.6一起使用的Maven版本是3.2.5。

请注意,最好继续使用较新的 Maven 版本(并将 Java 8 保留为系统路径中的默认值),并告诉 Maven 它正在构建的项目应在源代码设置为 1.6 的情况下进行编译 - 有关详细信息,请参阅源代码和目标文档。恢复到旧的Maven将删除较新版本的错误修复/增强功能。


答案 2

如果你有问题,你需要用JDK 6构建,但你想用JDK 7运行Maven(因为你喜欢使用Maven 3.3 +),你应该考虑使用工具链,这使得它彼此独立。


推荐