I setup M2_HOME
like this:
export M2_HOME="~/app/apache-maven-3.1.1"
and saw the same exception:
Exception in thread "main" java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.Launcher`.
I changed to use absolute path and it worked:
export M2_HOME="Users/myaccount/app/apache-maven-3.1.1"
In my case, the M2_HOME env variable wasn't the problem. I think that java and/or mvn startup script doesn't expand the tilde in classpath cmd line args.