21

I have to work in an older project that requires java 6 to run, as there are references to depreciated sun classes that have been removed in future versions. As part of the process, I changed my jdk from 8 in my system path to point to java 6 jdk. After doing so I get:

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) 

This is is similar to Maven Installation OSX Error Unsupported major.minor version 51.0 and Exception in thread "main" java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0) however I'm not looking to upgrade, I'm looking to find a version of maven that is compatible with java 6. Any ideas on which version is compatible and where I can download/install it from for mac?

Artur Malinowski
  • 1,124
  • 10
  • 30
James Oravec
  • 19,579
  • 27
  • 94
  • 160

2 Answers2

29

According to the Maven release history page, the last Maven version that works with JDK1.6 is 3.2.5.

Note that it's better to keep using the newer Maven version (and keep Java 8 as the default in the system path), and tell Maven that the project it's building should compile with source set to 1.6 - see source and target documentation for more info. Reverting to an old Maven will remove the bug fixes / enhancements of the newer versions.

Rodrigue
  • 3,617
  • 2
  • 37
  • 49
M A
  • 71,713
  • 13
  • 134
  • 174
  • 2
    Keeping Java8 and then compiling for Java6 may however lead to some issues, please check [this answer](http://stackoverflow.com/a/35915323/5606016) on the why and how you could prevent runtime troubles using Maven – A_Di-Matteo Mar 21 '16 at 21:04
  • 2
    Download from https://archive.apache.org/dist/maven/maven-3/3.2.5/binaries/ and can install similar to direction given on http://www.mkyong.com/maven/install-maven-on-mac-osx/ – James Oravec Mar 21 '16 at 21:09
  • @A.DiMatteo Interesting post. And as far as I can understand from the comments there, the best thing is to make sure the used APIs are compatible (at least until JDK9 is here). – M A Mar 21 '16 at 21:57
  • 1
    @AR.3 indeed, and the animal sniffer plugin makes a great job, I used at work in similar scenarios (I hit a runtime error and didn't have fun I must say :)). Comments from Stuart Marks make it kind of stamped-approved, but yes, Java 9 will change the game – A_Di-Matteo Mar 21 '16 at 22:06
3

If you have the problem you need to build with JDK 6 but you would like run Maven with JDK 7 (cause you like to use Maven 3.3+) you should consider using toolchain which makes this independent from each other.

Rodrigue
  • 3,617
  • 2
  • 37
  • 49
khmarbaise
  • 92,914
  • 28
  • 189
  • 235