将HashMap传递给Java函数时出现ClassCastException

时间:2011-11-18 09:47:53

标签: java clojure interop

我想用以下签名调用Java函数(由SVNKit提供):

public abstract long getFile(String path,
                             long revision,
                             Map properties,
                             OutputStream contents)
                      throws SVNException

参数属性和内容是可选的。在Clojure中,我用以下函数调用此函数:

(defn read-file
  ""
  [repository path]
  (let [properties (java.util.HashMap.)
        baos (java.io.ByteArrayOutputStream.)]
    (.getFile repository path -1 properties baos)
    (.size baos)))

我在properties参数上得到了ClassCastException。当我把它留下来(使用nil而不是属性)它工作正常。 ClassCastException不提供有关它所期望的类的任何信息。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

根据http://svnkit.com/javadoc/index-all.html

的SVNKit javadoc

没有列出您签名的方法。最接近的似乎是:

public abstract long getFile(String path,
                             long revision,
                             SVNProperties properties,
                             OutputStream contents)
                      throws SVNException

来自http://svnkit.com/javadoc/org/tmatesoft/svn/core/io/SVNRepository.html