Nutch:NoClassDefFoundError:org / springframework / retry / RetryCallback

时间:2017-07-31 09:45:55

标签: java spring indexing nutch

我正在运行正常的Nutch索引,它曾经在2天前工作完美,但今天它无处不在它只是停止使用上一个错误。堆栈错误之后:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/retry/RetryCallback
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at org.apache.nutch.plugin.Extension.getExtensionInstance(Extension.java:161)
    at org.apache.nutch.indexer.IndexWriters.<init>(IndexWriters.java:55)
    at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:121)
    at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:228)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:238)
Caused by: java.lang.ClassNotFoundException: org.springframework.retry.RetryCallback
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 10 more

我最终看到错误发生在这段代码中:

Object object = extensionClazz.newInstance();

SO上的另一个question但是有不同的项目能够通过添加spring-framework-messaging依赖项来解决问题

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-messaging</artifactId>
  <version>4.2.4.RELEASE</version>
</dependency>

我正在使用nutch版本1.12和ivy进行依赖关系管理,所以我的配置如下:

<dependency org="org.springframework.retry" name="spring-retry" rev="1.2.0.RELEASE">
      <exclude module="spring-beans"/>
      <exclude module="spring-context"/>
      <exclude module="spring-core"/>
      <exclude module="spring-aop"/>
</dependency>

即使添加了Spring-messaging依赖,它仍然无法正常工作。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

当您的类路径中有多个版本的同一个jar(同一个类)时,可能会出现这类错误。您可以通过执行

来查看依赖关系树
<report conf="compile" /> for ivy projects

并且

mvn dependency:tree for maven projects 

缩小到您想要的版本,您可以通过从导入它的模块中明确排除该jar来排除其他jar。

答案 1 :(得分:0)

No idea what went wrong but this was able to fix the problem

ant clean
ant runtime