我有一个应用程序需要httpclient-4.2.5.jar库才能正确运行。我也想使用HtmlUnit库(版本2.12)。由于库冲突(在httpclient-4.2.5.jar和htmlunit-2.12.jar之间),它失败了(我认为)
这是我的日志输出,但是我没有太多地记录它对我说的内容,因为我没有在日志中调用任何这些方法......
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.http.conn.ssl.SSLSocketFactory.createDefaultSSLContext()
at com.gargoylesoftware.htmlunit.HtmlUnitSSLSocketFactory.createSSLContext(HtmlUnitSSLSocketFactory.java:119)
at com.gargoylesoftware.htmlunit.HtmlUnitSSLSocketFactory.<init>(HtmlUnitSSLSocketFactory.java:102)
at com.gargoylesoftware.htmlunit.HtmlUnitSSLSocketFactory.buildSSLSocketFactory(HtmlUnitSSLSocketFactory.java:77)
at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:608)
at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClient(HttpWebConnection.java:555)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClient(HttpWebConnection.java:518)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:155)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1486)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1403)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:305)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:374)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:359)
答案 0 :(得分:3)
这一切都很简单。 HtmlUnit通过反思在HttpClient代码中使用私有方法:
版本4.2.4中删除了相关方法。见HTTPCLIENT-1320
答案 1 :(得分:2)
嗯,对我有用的唯一解决方案是降级到httpclient 4.2 - http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.2
答案 2 :(得分:2)
将htmlunit版本提升为2.15可以解决问题。为我工作
答案 3 :(得分:0)
快速检查“org.apache.http.conn.ssl.SSLSocketFactory”类文档,那里没有这样的“createDefaultSSLContext()”方法。
答案 4 :(得分:0)
我有这个问题,因为我想在Selenium中使用WebClient。
我将Selenium从2.33.0升级到2.45.0,之后WebClient运行良好。