Couldn't create proxy provider class

想请问一下我配置了hdfs-site.sh配置hadoop-client仍然报错

img

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 【Hadoop】HDFS操作、数据上传与下载原理解析、高级特性及底层原理中的 4.1 Java的代理对象Proxy 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    注意在前面的数据上传过程中的第三步,特意进行标红,“建立RPC通信,得到NameNode的代理对象”,接下来就介绍一下代理对象的相关知识,RPC放在最后面进行介绍

    使用代理对象的过程可以理解为购买火车票,火车票最终是由火车站(12306售出),但是可以使用其它的软件或者网站购买,这些软件或者网站就是代理对象,而且代理对象还可以增加一些原来没有的附加服务,比如增选座位靠窗、卧铺上中下、增值餐饮服务等。
    在这里插入图片描述
    实战操作,还是使用Eclipse,新建一个proxy的package,然后创建一个MyService的接口
    在这里插入图片描述
    接口文件里面输入两个实例的方法:method1和method2,然后在创建一个Java Class来实现接口的类
    在这里插入图片描述
    该文件中的信息如下,为了更好地展示调用了哪个方法,在每个方法中都输出对应的方法名称
    在这里插入图片描述
    最后在创建一个实现的Java Class来运行,结果可以发现接口中的两个方法均可正常运行,最后输出打印了对应方法中的内容
    在这里插入图片描述
    然后就有了需求,对于method2中的功能我觉得可以在完善,就要基于此接口的上丰富我想要的功能(在不修改源码的基础上,对method2进行重写)

    代理对象实现的类,通过查找Java API文档可以发现,使用的是newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

    • 第一个参数:ClassLoader loader 类加载器(相当于实例化一个类)
    • 第二个参数:Class<?>[] interfaces 真正对象实现的接口 (真正的实现的软件或网站)
    • 第三个参数:InvocationHandler h如何处理客户端的调用 (具体的处理方式)
      在这里插入图片描述
      接着就是进行方法的重写,根据方法的名称进行判断,然后if里面的内容就是我们可以再进行开发的地方
      在这里插入图片描述
      还有一个小细节,就是今后看到$符号,就明确知道这个对象是一个代理对象,比如上面的代码在41行打个断点,然后以debug的模式运行,运行完毕后,鼠标放置在proxy上面,就会有个自动显示,如下,存在$符号,说明是一个代理对象,而不是真实的对象
      在这里插入图片描述

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^