spark关于jersey包的冲突

背景

今天想启动spark的history server 去查询以往的日志,发现能启动成功,但是查看web界面的时候却啥也没有,并且后台报错

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)

解决

1、定位问题

参考了些文章,发现是jersey包冲突的问题,查看了下spark的jars下面的jar包

[hadoop@shujuyun01-cuidong jars]$ ll jersey*
-rw-r--r-- 1 hadoop users 130458 Jan 19 10:33 jersey-client-1.9.jar
-rw-r--r-- 1 hadoop users 167421 Jan 19 10:33 jersey-client-2.22.2.jar.bak
-rw-r--r-- 1 hadoop users 698375 Jan 19 10:33 jersey-common-2.22.2.jar
-rw-r--r-- 1 hadoop users  18098 Jan 19 10:33 jersey-container-servlet-2.22.2.jar
-rw-r--r-- 1 hadoop users  66270 Jan 19 10:33 jersey-container-servlet-core-2.22.2.jar
-rw-r--r-- 1 hadoop users 458861 Apr 10 22:05 jersey-core-1.9.jar
-rw-r--r-- 1 hadoop users 971310 Jan 19 10:33 jersey-guava-2.22.2.jar
-rw-r--r-- 1 hadoop users  72733 Jan 19 10:33 jersey-media-jaxb-2.22.2.jar
-rw-r--r-- 1 hadoop users 951701 Jan 19 10:33 jersey-server-2.22.2.jar

hadoop 依赖的jersey包版本是 1.9

https://hadoop.apache.org/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce-client-app/dependency-analysis.html

而spark 依赖的版本包是2.2
所以有些地方是不一样的,是依赖中的包里面缺少这个方法所致。

2、具体解决

将这个jersey-core-1.9.jar 拷贝出来,新建一个工程,将Application类的源码复制过去并将报错中的方法手动添加上,编译后将class替换到jar中的class解决问题。(这一块不细讲,查一下命令就会了),命令为

jar uvf jersey-core-1.9.jar javax/ws/rs/core/Application.class

在解决过程中有个问题注意下:需要注意他的参数和返回值,我们在报错中可以看到是ApplicationHandler这个类应用的,所以可以在IDEA中查看这个类的方法,到指定行中,查看需要的参数的类型,即getProperties()方法的返回值,如图所示
image.png

image.png

由图所值,我们需要返回值为Map<String, Object> 类型的map,所以我们在Application上添加的方法为

  public Map<String, Object>  getProperties(){

        Map<String, Object> map=new HashMap<String, Object>() ;
        return map;
    }

我在这耽误了一点时间(我觉得我也是太菜了~)

然后将新的jar 放到spark的jars目录下 问题解决。

参考资料:https://www.jianshu.com/p/d630582c8108

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值