mvn -v给了我“不支持的major.minor版本51.0”

时间:2017-03-20 11:30:55

标签: java macos maven terminal

我在终端输入<div class="container"> <h2>Horizontal form</h2> <form class="form-horizontal"> <div class="row row-centered"> <div class="col-xs-12 col-sm-6 col-centered"> <div class="form-group"> <label class="control-label col-sm-3" for="email">Email:</label> <div class="col-sm-9"> <input type="email" class="form-control" id="email" placeholder="Enter email"> </div> </div> <div class="form-group"> <label class="control-label col-sm-3" for="pwd">Password:</label> <div class="col-sm-9"> <input type="password" class="form-control" id="pwd" placeholder="Enter password"> </div> </div> </div> <div class="col-xs-12 col-sm-6 col-centered"> <div class="form-group"> <label class="control-label col-sm-3" for="email">Email:</label> <div class="col-sm-9"> <input type="email" class="form-control" id="email" placeholder="Enter email"> </div> </div> <div class="form-group"> <label class="control-label col-sm-3" for="pwd">Password:</label> <div class="col-sm-9"> <input type="password" class="form-control" id="pwd" placeholder="Enter password"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label><input type="checkbox"> Remember me</label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">Submit</button> </div> </div> </div> </div> </form> </div> Fiddler link is https://jsfiddle.net/j6jLhtc7/1/ ,它给了我

mvn -v

我使用的java版本是当前的Java 8, 我的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) 变量设置为$JAVA_HOME

/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home给了我

java -v

所以这一切都应该是正确的,对吗?知道我在这里可能缺少什么吗?

编辑:事实证明,我的java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 缺少export JAVA_HOME行。修正了以下正确的答案。

2 个答案:

答案 0 :(得分:3)

首先,异常是因为正在加载的库对于运行的Java版本来说太新了。版本51.0是Java 7,因此mvn必须与Java 6或更早版本一起运行。无论你认为JAVA_HOME是什么,这都不是争议的问题。

命令mvn是一个执行mvn Java可执行文件的shell脚本。这很简短,很容易理解。

您可以通过插入

确认运行的Java版本
echo "$JAVA_HOME"
echo "$JAVACMD"
"$JAVACMD" -version

就在以

开头的结尾处
exec "$JAVACMD" ....

它可能会在/System/Library中找到Apple的java版本,你几乎肯定没有完全正确地设置JAVA_HOME。

修改

根据评论,似乎mvn认为$JAVA_HOME

/System/Library/Frameworks/JavaVM.framework/Versions/Current‌​JDK/Home 

这是基于Java 1.6的Apple JDK的位置。解决问题的正确方法是确保在右.profile.bash_profile中正确设置JAVA_HOME,具体取决于您使用的shell。

以下是我的.profile,删除了所有非mvn相关位。

 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8/Contents/Home
 M2_HOME=/usr/local/maven
 M2=$M2_HOME/bin
 MAVEN_OPTS="-Xmx512M"
 export M2_HOME M2 JAVA_HOME MAVEN_OPTS

 PATH=$JAVA_HOME/bin:$HOME/bin:$PATH:$M2

 EDITOR=vim 
 export EDITOR

答案 1 :(得分:0)

请你检查apache maven安装中的/apache-maven/bin/mvn(包含linux / unix)或/apache-maven/bin/mvn.cmd(如果是windows)文件是否将JAVA_HOME设置为某个旧版本的Java。

它可能使用旧的java版本。