【问题标题】:ClassCastException when passing a HashMap to a Java function将 HashMap 传递给 Java 函数时发生 ClassCastException
【发布时间】:2011-11-18 09:47:53
【问题描述】:

我想调用一个带有以下签名的 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)))

我在属性参数上得到一个 ClassCastException。当我忽略它(使用 nil 而不是属性)时,它可以正常工作。 ClassCastException 没有提供任何关于它所期望的类的信息。

有什么想法吗?

【问题讨论】:

  • 这可能是一个愚蠢的问题 - 但你确定 getFile 方法中的 Map 接口是 java.util.Map 吗?
  • 你确定那是the method signature
  • “ClassCastException 没有提供任何关于它所期望的类的信息。”这是非常适得其反的。不要试图总结你说你不理解的错误信息,你应该提供实际的错误信息,让其他人决定它是否包含有用的信息。

标签: java clojure interop


【解决方案1】:

根据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

【讨论】:

猜你喜欢
  • 2012-05-04
  • 1970-01-01
  • 2022-01-22
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多