Nutch: NoClassDefFoundError: org/springframework/retry/RetryCallback
Nutch: NoClassDefFoundError: org/springframework/retry/RetryCallback
我是 运行 普通的 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 上的另一个 但项目不同能够通过添加 spring-framework-messaging 依赖项
来解决问题
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
好吧,我正在使用带有 ivy 的 nutch 1.12 版进行依赖管理,所以在我的配置中如下:
<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-消息传递依赖项,它仍然无法正常工作。
有什么想法吗?
当你的 class 路径中有多个版本的相同 jar (相同 class) 时,可能会出现这些错误,你可以通过执行 [=12= 查看依赖树]
<report conf="compile" /> for ivy projects
和
mvn dependency:tree for maven projects
缩小到您想要的版本,您可以通过从导入它的模块中明确排除那个 jar 来排除另一个 jar。
不知道出了什么问题,但这能够解决问题
ant clean
ant runtime
我是 运行 普通的 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 上的另一个
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
好吧,我正在使用带有 ivy 的 nutch 1.12 版进行依赖管理,所以在我的配置中如下:
<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-消息传递依赖项,它仍然无法正常工作。 有什么想法吗?
当你的 class 路径中有多个版本的相同 jar (相同 class) 时,可能会出现这些错误,你可以通过执行 [=12= 查看依赖树]
<report conf="compile" /> for ivy projects
和
mvn dependency:tree for maven projects
缩小到您想要的版本,您可以通过从导入它的模块中明确排除那个 jar 来排除另一个 jar。
不知道出了什么问题,但这能够解决问题
ant clean
ant runtime