Hadoop运行jar包jdk版本冲突问题解决
2017-06-04 14:10
591 查看
前言:今天在eclipse上编译jar包放到hadoop上运行的时候出现了版本冲突的问题.
出现了如下报错内容:
出现这个问题是由于eclipse的jdk版本和linux的jdk版本不兼容引起的.
可以看到linux的jdk版本是1.8.0_131.
再来看一下eclipse的版本. 选择项目右键–>Build Path–>Configure Build Path…,选择Java Build Path,可以看到:
点击”Edit”,可以看到jar包编译的版本是1.8.0_111.
Linux的jdk版本1.8.0_131是高于eclipse的jdk版本1.8.0_111.按照道理来说,jdk版本都是向下兼容的,也就是说高版本的jdk是兼容低版本的.是不是Linux的jdk不起作用呢?好吧,那就重启一下Linux试一下.
重启完毕后再执行命令:
还是报同样的错误.
选择项目右键–>Build Path–>Configure Build Path…,选择Java Build Path,可以看到:
点击”Edit”
这里选择一个1.7的版本,然后点击”Finish”.返回上一级窗口,再点击”Java comliper”,会出现如下图,点击Apply,最后点击”OK”退出.
再次编译导出jar包上传到Linux上.再次执行命令:
可以看到这次没有问题了.
报错内容:
在linux机器上执行如下命令:hadoop jar XXXXX.jar com.XXX.XXXXXX
出现了如下报错内容:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/XXX/XXXXXX : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at org.apache.hadoop.util.RunJar.run(RunJar.java:214) at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
出现这个问题是由于eclipse的jdk版本和linux的jdk版本不兼容引起的.
检查jdk版本:
先来看一下linux的jdk版本,在linux上执行命令:[root@xxx xxxx]# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
可以看到linux的jdk版本是1.8.0_131.
再来看一下eclipse的版本. 选择项目右键–>Build Path–>Configure Build Path…,选择Java Build Path,可以看到:
点击”Edit”,可以看到jar包编译的版本是1.8.0_111.
Linux的jdk版本1.8.0_131是高于eclipse的jdk版本1.8.0_111.按照道理来说,jdk版本都是向下兼容的,也就是说高版本的jdk是兼容低版本的.是不是Linux的jdk不起作用呢?好吧,那就重启一下Linux试一下.
重启完毕后再执行命令:
hadoop jar XXXXX.jar com.XXX.XXXXXX
还是报同样的错误.
解决方法:
既然eclipse使用jdk1.8.0_111版本不兼容,那尝试一下修改eclipse的jdk版本到1.7选择项目右键–>Build Path–>Configure Build Path…,选择Java Build Path,可以看到:
点击”Edit”
这里选择一个1.7的版本,然后点击”Finish”.返回上一级窗口,再点击”Java comliper”,会出现如下图,点击Apply,最后点击”OK”退出.
再次编译导出jar包上传到Linux上.再次执行命令:
[root@xxx xxxxx]# hadoop jar xxxx com.xxx.xxxxxxx 17/05/30 14:00:38 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 17/05/30 14:00:39 INFO input.FileInputFormat: Total input paths to process : 1 17/05/30 14:00:39 INFO mapreduce.JobSubmitter: number of splits:1 17/05/30 14:00:39 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1496121772589_0003 17/05/30 14:00:39 INFO impl.YarnClientImpl: Submitted application application_1496121772589_0003 17/05/30 14:00:40 INFO mapreduce.Job: The url to track the job: http://node3:8088/proxy/application_1496121772589_0003/ 17/05/30 14:00:40 INFO mapreduce.Job: Running job: job_1496121772589_0003 17/05/30 14:00:47 INFO mapreduce.Job: Job job_1496121772589_0003 running in uber mode : false 17/05/30 14:00:47 INFO mapreduce.Job: map 0% reduce 0% 17/05/30 14:00:54 INFO mapreduce.Job: map 100% reduce 0% 17/05/30 14:01:01 INFO mapreduce.Job: map 100% reduce 100% 17/05/30 14:01:02 INFO mapreduce.Job: Job job_1496121772589_0003 completed successfully
可以看到这次没有问题了.
相关文章推荐
- 【转】Windows7 下安装 JDK 7 时版本冲突问题解决
- Maven中jar版本冲突问题的解决
- 解决jdk1.4生成二维码问题,因为现下生成二维码的jar包,版本最低支持jdk1.5以上的版本,老的项目中想使用二维码,直接使用jar包无法使用
- weblogic 12c下使用hadoop时jar包冲突的两个问题的解决办法
- Hadoop 运行 yarn jar 单词统计问题解决
- 解决Hadoop运行jar包时MapReduce任务启动前OutOfMemoryError:Java heap space问题
- 利用JAVA中的endorsed技术解决jar包版本冲突的问题
- 【问题处理】arcgis运行在android studio上jar包冲突解决
- 解决系统jar文件双击不能运行问题以及JDK的配置问题
- retrofit2和rxjava2一起使用时的rxjava.jar版本冲突问题解决
- hadoop-0.20.1-examples.jar wordcount 例子运行出现的问题记录
- cxf webserivce与jdk1.6包冲突问题解决办法
- 关于VS2008 中添加成员变量提示 此网站的某个加载项运行失败 请检查“Internet选项”中的安全设置是否存在潜在冲突 问题解决办法
- struts2和Hibernate的jar包冲突问题解决
- 解决运行jar文件 Bad version number in .class file 报错问题
- MyEclipse8.5中关于SSH的运用如何解决jar包冲突的问题
- Hadoop MapReduce程序中解决第三方jar包问题--终极解决方案
- tomcat和eclipse jdk版本冲突问题
- 解决Win7装了JDK却不能直接双击运行.jar文件的方法
- Windows下Cygwin环境的Hadoop安装(3)- 运行hadoop中的wordcount实例遇到的问题和解决方法