Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven测试和验证的不同类路径?_Java_Maven_Guava - Fatal编程技术网

Java maven测试和验证的不同类路径?

Java maven测试和验证的不同类路径?,java,maven,guava,Java,Maven,Guava,我可以在maven测试阶段通过我的单元,但如果我运行verify,我将遇到NoSuchMethodError问题。我在父pom文件和子模块文件中有不同的番石榴版本。但奇怪的是,测试通过了测试,但在验证中遇到了这个问题。有人能告诉我为什么吗?谢谢 java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

我可以在maven测试阶段通过我的单元,但如果我运行verify,我将遇到NoSuchMethodError问题。我在父pom文件和子模块文件中有不同的番石榴版本。但奇怪的是,测试通过了测试,但在验证中遇到了这个问题。有人能告诉我为什么吗?谢谢

java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
    at org.elasticsearch.threadpool.ThreadPool.<clinit>(ThreadPool.java:192)
    at org.elasticsearch.node.Node.<init>(Node.java:170)
    at org.elasticsearch.node.Node.<init>(Node.java:140)
    at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:143)
    at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:150)
    ....
java.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
位于org.elasticsearch.threadpool.threadpool.(threadpool.java:192)
在org.elasticsearch.node.node.(node.java:170)
在org.elasticsearch.node.node.(node.java:140)
位于org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:143)
位于org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:150)
....
这是父pom文件中与番石榴相关的内容

 <properties>
   <guava.version>15.0</guava.version>
 </properties>
 <dependencyManagement>
   <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>${guava.version}</version>
    </dependency>
 ...

15
番石榴
番石榴
${guava.version}
...
这是子模块中与番石榴相关的东西

  <properties>
    <guava.version>18.0</guava.version>
  </properties>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>${guava.version}</version>
    </dependency>

18
番石榴
番石榴
${guava.version}

您没有为我们提供任何帮助。那么一些代码,一些maven依赖性呢?Guava 18.0中引入了依赖树或其他什么?
MoreExecutors.directExecutor()
。您很可能在类路径上有一个版本Guava 18+和另一个低于该版本的版本。散列和其他操作会使一个版本在不同的上下文中先于另一个版本,而
test
verify
是不同的上下文。@OlivierGrégoire让我惊讶的是,为什么maven verify会选择guava 15,而maven test会选择guava 18这就是为什么
mvn依赖项:tree
会有所帮助。让我们想象以下场景:父母pom A,孩子pom B和C。A说“我吃番石榴15”,B说“我和父母一样吃”,C说“我吃B加番石榴18”,bam,你需要两个版本。正如我所说的,有一些散列和上下文为类路径添加了更多内容。他们可能会在某一点上把番石榴15放在番石榴18之前,而在另一种情况下会做相反的事情。为了避免您的问题,只需检查依赖关系树,然后使用
..
@OlivierGrégoire
依赖关系从您的孩子身上删除不需要的番石榴版本:树
显示我得到了正确的番石榴18,并且通过了测试阶段,但当我运行
mvn verify
时,测试失败,非常奇怪,似乎
验证阶段
需要番石榴15,而
测试阶段
需要番石榴18