我必须在一个需要运行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)
这与https://datatables.net/reference/api/data()和Maven Installation OSX Error Unsupported major.minor version 51.0类似,但我不打算升级,我正在寻找与java 6兼容的maven版本。关于哪个版本兼容的想法以及我可以从mac下载/安装它的地方?
答案 0 :(得分:18)
根据the Maven release history page,与JDK1.6一起使用的最后一个Maven版本是3.2.5。
请注意,最好继续使用较新的Maven版本(并将Java 8保留为系统路径中的默认版本),并告诉Maven它所构建的项目应该在源设置为1.6 - 有关详细信息,请参阅source and target documentation。恢复旧版Maven将删除新版本的错误修复/增强功能。
答案 1 :(得分:2)
如果您遇到问题需要使用JDK 6进行构建,但是您希望使用JDK 7运行Maven(因为您希望使用Maven 3.3+),您应该考虑使用toolchain这使得它彼此独立