开发者社区> 问答> 正文

hadoop上java 报错

"

本人参考书上的源代码在hadoop上做实验,源代码如下:

public class URLCat { static { URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public static void main(String[] args) throws Exception { InputStream in = null; try { in = new URL(args[0]).openStream(); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } } }

程序编译完成后,执行:

    hadoop URLCat hdfs://文件路径...

报错:

    Exception in thread "main" java.lang.UnsupportedClassVersionError: URLCat:Unsupported major.minor version 51.0
    ...

怎么破?
怎么解决?
谢谢~

" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/a1b31a0f71624e09ae3601f7fadb677d.png)

展开
收起
因为相信,所以看见。 2020-05-26 13:56:24 868 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    这个异常应该和源码没有关系。
    class文件结构里最开头4字节是Magic Number,也就是0xCAFEBABE
    后面接的4个字节就是题主异常信息中的Minor versionMajor version
    第5、第6是Minor version,第7、第8则是Major version
    而Java的版本号是从45开始的,参考:

    J2SE 8 = 52,
    J2SE 7 = 51,
    J2SE 6.0 = 50,
    J2SE 5.0 = 49,
    JDK 1.4 = 48,
    JDK 1.3 = 47,
    JDK 1.2 = 46,
    JDK 1.1 = 45

    真不知道知道这些有什么用,题主试试用Java7以上编译。
    参考:http://en.wikipedia.org/wiki/Java_class_file

    ######

    java 版本不对

    ######

    源码的话,应该没问题,如果是这样报错的话,我遇到过,是因为环境变量和conf文件指定的问题,找不到你所指定的URLCat这个类,你只要配置好你所需要使用的集群的配置文件,并且指定好对应集群的客户端,以及相关的各种库就可以了,当时我也是搞了很久,在书上对配置的东西弱化了,没怎么讲,只能自己去实践。
    你可以参考一下这个文章:
    http://segmentfault.com/blog/akunamatata/1190000002610514
    这里面详细讲了如何配置环境变量,编译,执行,以及如何指定配置文件

    ######

    从异常提示的信息的来看就是不支持的class文件版本异常,建议更换更高版本的jdk

    " ![image.png](https://ucc.alicdn.com/pic/developer-ecology/6b33e51e20354f0cb29e0d35a8d70fca.png)
    2020-05-27 10:09:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载