相关文章推荐
迷茫的马克杯  ·  OCI runtime exec ...·  1 年前    · 
善良的刺猬  ·  Oracle 12c ...·  1 年前    · 
暴走的橡皮擦  ·  selenium.common.except ...·  1 年前    · 

通过Spark-submit提交的任务抛出了java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()Ljava/util/Set的异常,去网上搜了一下解决思路,大概有以下几种方法,供大家参考下:

一、 Guava低版本和高版本的冲突 。newConcurrentHashSet这个方法是在Guava-15.0及更高版本中在出现的,如果你的程序中有其它的jar包依赖了低版本的guava,如guava-14.0等,你就需要此jar包找出来,并且把低版本的guava从此jar包中移除出去。

移除方法 :假如是A jar包中依赖了低版本的guava,可以在pom文件中A jar下加入如下代码

<dependency>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>

p.s jar包依赖关系的查找:

1、Eclipse下直接打开pom文件,选择Dependency Hierarchy选项进行查看

2、Linux 下通过命令:mvn dependency:tree 来进行查看

二、 guava 版本和 google-collections冲突。 找到依赖google-collections的jar包,把依赖关系去掉。

移除方法:假如是A jar包中依赖了低版本的google-collections,可以在pom文件中A jar下加入如下代码

<dependency>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
</exclusion>
</exclusions>
</dependency>

三、 Hadoop集群或者spark集群中的jar包的影响:这种情况是最难解决的一种情况,你可以通过此种方法打印出是哪个jar包导致的此错误

在你程序抛异常的那句话上面加上如下代码:

System.out.println("----------------------" + this.getClass().getResource("/com/google/common/collect/Sets.class"));

运行你的代码,会打印出含有Sets这个类的jar包,然后检查此jar包出现在何处,看是否可以去掉。去掉是最不好的一种方法。

题外话:我程序中的错误就是因为Spark提交任务后老是加载hadoop安装目录下的一个avro-tools-1.7.6-cdh5.5.0.jar的一个jar包,这个jar包我又没法去掉,本来想着在spark-defaults.conf 文件下加入这句话:spark.driver.extraClassPath=...../guava-17.0.jar,后来发现Spark程序刚启动的时候确实加载了Guava,但后来到各个机器上运行的时候依然报错,索性放那没解决。如果大家有什么好的方法,欢迎指教

Spark集群下运行程序出现java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()Ljava/util/Set异常的解决思路
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java . lang .NoClassDefFoundError: java x/el/ExpressionFactory 分析:少包,上网查阅后发现 解决 方法 解决 方法:将 java ee.jar包再copy一份放在tomcat目录的 common \lib下 如上完成后即 解决 了该 异常 ,大以为大功告成,没想到又出现了新 异常 错误信息: java . lang . NoSuchMethodError : java x.
<groupId> com . google .guava</groupId> <artifactId>guava</artifactId> <version>24.0-jre</version> </dependency>
错误分析: 单独项目没有依赖,开发环境运行正常,tomcat部署war包后,运行找不到方法,Linux系统部署没问题,Windows系统部署出现问题,分析,系统的加载顺序不一致,再开发环境寻找 异常 时,将我们找不到的这个方法的pom依赖找到,尝试将位置放在首位或者最后,再次运行,查看开发环境是否有找不到这个方法的 异常 处理 异常 : 首先将 com . google . common . collect 这个方法,直接在开发环境中写一下查看一下这个包的所在,以下是我修改正常的包路径,问题出现的包路径是 com . google .g
然而注入docker- java 依赖之后启动项目时报以下错误,以至于项目启动不起来。 java . lang . NoSuchMethodError : com . google . common . collect . Sets $SetView.iterator()L com / google / common / collect /UnmodifiableIterator; at org.reflections.Reflections.expandSuperType
17:45:59.203 [background-preinit] DEBUG org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver - Cannot find java x.persistence.Persistence on classpath. Assuming non JPA 2 environment. All properties will per default be traversable. *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: springfox.documentation.spr
【软件测试】Exception in thread "main" java . lang . NoSuchMethodError : com . google . common . collect .ImmutableSet
异常 Exception: java . lang . NoSuchMethodError : com . google . common . collect .ImmutableSet.toImmutableSet()L java /util/stream/ Collect or; at org.openqa.selenium.remote.ProtocolHandshake.streamW3CProtocolParame
SpringbootUnable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFact 12719 java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()异常解决思路 hero_yin: 可以试试 spark.executor.userClassPathFirst