org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0

6 篇文章 0 订阅
5 篇文章 0 订阅

今天导出项目war包的时候遇到这个问题,花了挺久时间解决,做个笔记总结一下。

本次项目中使用的版本是1.6,因为服务器上面的java环境是1.6,所以不能更改项目的版本号,当时将项目导成war包的时候出错了,错误代码如下:

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:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	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的version分别对应的版本号,这个很重要,版本冲突在项目移植中经常遇到。

J2SE 8 = 52,

J2SE 7 = 51,

J2SE 6.0 = 50,

J2SE 5.0 = 49,

JDK 1.4 = 48

看到“Unsupported major.minor version 51.0”首先想到的是jdk1.7版本;按照平常的想法,修改了编译器compiler也为1.6,将jdk和jvm都设为1.6但是还是报错。去网上查询说法,原因很明显是因为编译和运行的版本冲突,只需要修改为同版本就行了。
尝试将jdk修改为1.7,成功运行项目。平时个人练习的话可以任意修改java的版本号,但是因为公司服务器上面的版本号规定是1.6了,高版本的程序是无法在上面跑起来的,陷入了两难的境况。
那么又是什么原因导致了项目上面最低只能部署jdk为1.7。其实仔细看报错的代码:

    org/apache/maven/cli/MavenCli

可以发现真正令jdk版本冲突的是maven版本。maven正常的流程是需要程序员手动部署的,但是因为ide越来越智能,不需要部署就可以使用maven,我使用的是ecplise,自带的maven版本是3.5.3。
在这里插入图片描述
知道了版本号,一般途径是去官网查看版本协议
在这里插入图片描述
这个是官网主页上就有的,大意是maven3.3最低支持jdk1.7.我的ecplise自带的maven是3.5,很明显不能使用jdk1.6。现在只需要在maven的官网上面下载版本号低于3.3的在安装到电脑上就可以了。具体的安装maven就不详述了,网上有很多的安装教程。安装并配置好maven的环境后,在ecplise上搜索maven并add安装目录地址上去即可。

总结:一般的报错都会把错误信息描述的比较完整,我一开始报错的时候是盲目的复制信息到网上百度,而不是自己先理清一遍错误信息,知道是版本冲突而不知道真正导致的原因,浪费了很多时间,最后在公司前辈帮助下解决问题。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值