错误在0.7.3版本以上出现
前言
在公司实习,大佬分配了一个爬虫爬取数据并存入数据库的任务,然后本小白就开始了Webmagic的学习,在项目运行时,发现在Webmagic0.7.3版本以后,会出现某个java_11报错。
`
1.错误
代码如下(示例):
Exception in thread "main" java.lang.NoSuchFieldError: JAVA_11
at us.codecraft.webmagic.downloader.HttpClientGenerator.buildSSLConnectionSocketFactory(HttpClientGenerator.java:63)
at us.codecraft.webmagic.downloader.HttpClientGenerator.<init>(HttpClientGenerator.java:53)
at us.codecraft.webmagic.downloader.HttpClientDownloader.<init>(HttpClientDownloader.java:38)
at us.codecraft.webmagic.Spider.initComponent(Spider.java:280)
at us.codecraft.webmagic.Spider.run(Spider.java:305)
at com.ned.webmagic.magictest.JobProcessor.main(JobProcessor.java:22)
2.解决方法
出现这个错误的原因是因为webmagic集成了commons-lang3,而commons-lang3中含有一个过时属性,Java11中这个属性不能使用。最简单的办法就是将commons-lang3更新到3.9版本。
在pom中修改:
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.10.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
将webmagic自带的弃用,用我们自己引入的commons-lang3 3.9问题大概率就解决了
总结
记录一下我的报错,希望能够帮到别人避开这个坑,节省时间。如果还不能解决问题,可以参考:
https://github.com/code4craft/webmagic/issues/970。有大佬给出了别的解决方法。