clojure - java interop(找不到匹配的构造函数)

Ant*_*ald 3 java interop class clojure

考虑以下 Java 代码行:

final WebClient webClient = new WebClient()
final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
Run Code Online (Sandbox Code Playgroud)

(取自HTML 单元项目的“入门”示例 )

这将如何被 Clojure 采用?

添加所需的依赖项后,我尝试了以下操作:

(import '[com.gargoylesoftware.htmlunit.html HtmlPage])
(import '[com.gargoylesoftware.htmlunit WebClient])

(let [wc (WebClient.)
      hp (HtmlPage. (.getPage wc "http://www.something.."))]
   ;;...)
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

CompilerException java.lang.IllegalArgumentException: No matching ctor found f\
or class com.gargoylesoftware.htmlunit.html.HtmlPage, compiling:(*cider-repl l\
ocalhost*:30:16) 
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?


编辑:

如评论中所述,可能不需要调用 HtmlPage 的构造函数。然而,下面的代码也会产生一个错误,尽管是另一个:

    (.getPage (WebClient.) "http://htmlunit.sourceforge.net")

IllegalArgumentException Cannot locate declared field class org.apache.http.im\
pl.client.HttpClientBuilder.dnsResolver  org.apache.commons.lang3.Validate.isT\
rue (Validate.java:155) 
Run Code Online (Sandbox Code Playgroud)

Sam*_*tep 5

这个:

(HtmlPage. (.getPage wc "http://www.something.."))
Run Code Online (Sandbox Code Playgroud)

相当于:

(new HtmlPage (. wc getPage "http://www.something.."))
Run Code Online (Sandbox Code Playgroud)

这相当于这个 Java 代码:

new HtmlPage(wc.getPage("http://www.something.."))
Run Code Online (Sandbox Code Playgroud)

只需省略额外的构造函数调用:

(.getPage wc "http://www.something..")
Run Code Online (Sandbox Code Playgroud)