Open yuanqingshan opened 3 years ago
commons-lang3 这个包是什么版本?
我也遇到相同问题了,commons-lang3-3.10
我也遇到相同问题了,commons-lang3-3.10
不应该呀,我看是有这个 org.apache.commons.lang3.JavaVersion.JAVA_11
:
/**
* Java 11
*
* @since 3.8
*/
JAVA_11(11.0f, "11"),
mvn dependency:tree
检查一下看看有没有存在多个版本的 commons-lang3。
这个问题有没有解决
这个问题需要你们遇到问题的提供一下 mvn dependency:tree
的输出以便分析到底是怎么回事。
public enum JavaVersion {
JAVA_0_9(1.5F, "0.9"),
JAVA_1_1(1.1F, "1.1"),
JAVA_1_2(1.2F, "1.2"),
JAVA_1_3(1.3F, "1.3"),
JAVA_1_4(1.4F, "1.4"),
JAVA_1_5(1.5F, "1.5"),
JAVA_1_6(1.6F, "1.6"),
JAVA_1_7(1.7F, "1.7"),
JAVA_1_8(1.8F, "1.8"),
/** @deprecated */
@Deprecated
JAVA_1_9(9.0F, "9"),
JAVA_9(9.0F, "9"),
JAVA_10(10.0F, "10"),
JAVA_11(11.0F, "11"),
JAVA_12(12.0F, "12"),
JAVA_13(13.0F, "13"),
JAVA_14(14.0F, "14"),
JAVA_15(15.0F, "15"),
JAVA_16(16.0F, "16"),
JAVA_RECENT(maxVersion(), Float.toString(maxVersion()));
修改webmagic/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientGenerator.java这个类中的buildSSLConnectionSocketFactory()方法,把这个方法的内容全部替换为:
try {
return new SSLConnectionSocketFactory(createIgnoreVerifySSL(), new String[]{"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"},
null,
new DefaultHostnameVerifier()); // 优先绕过安全证书
} catch (KeyManagementException e) {
logger.error("ssl connection fail", e);
} catch (NoSuchAlgorithmException e) {
logger.error("ssl connection fail", e);
}
return SSLConnectionSocketFactory.getSocketFactory();
然后修改HttpClientGenerator类中buildSSLConnectionSocketFactory()方法,替换全部内容和第一个方法一样,将HttpClientDownloader类中引用的HttpClientGenerator替换为自己刚刚修改的,最后在爬虫的创建启动中把HttpClientDownloader设置进去
Spider.create(new GithubRepoPageProcessor())
.setDownloader(new HttpClientDownloader())
.addUrl("https://github.com/code4craft")
.thread(5)
.run();
然后在运行就不会报错了,这个错误跟SSL那个错误解决办法基本上是一样的
这个问题需要你们遇到问题的提供一下
mvn dependency:tree
的输出以便分析到底是怎么回事。
已经解决了,三克油
用7.5 也不能解决么
我遇到了,把commons-lang3更新为3.9 解决。
HttpClientGenerator这个类中if (SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_11)) { supportedProtocols = new String[] { "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" }; } else { supportedProtocols = new String[] { "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" }; }
JAVA_11没有值啊