请在2024 Clojure状态调查!中分享您的想法。

欢迎!请查阅关于页面,了解更多有关此处的信息。

0
Clojure
已关闭

当我以为我已经掌握了Clojure/Java互操作性的方法时,我却遇到了
难题!

我想使用一些Java代码,jkahypar

它在Maven中注册得很好,我已在projects.clj中创建了条目。

[fr.cril/jkahypar "0.2.0"]

我可以导入我开始的特定工具

(import fr.univartois.cril.jkahypar.tools.HypergraphParser)
=> fr.univartois.cril.jkahypar.tools.HypergraphParser

(type HypergraphParser)
=> java.lang.Class

但我做不到的是调用任何一个类的构造函数方法,
使用String或InputStream作为数据文件路径

(def tf ".../graphs/add20.metis")

(def fs (clojure.java.io/input-stream tf))
(type fs)
=> java.io.BufferedInputStream
	

(def hgp (HypergraphParser/HypergraphParser tf))

Syntax error (IllegalArgumentException) compiling . at (/private/var/folders/dz/8plg36qs1r50kjb6wvn4dwh00000gn/T/form-init7854241673144140259.clj:1:10).
No matching method HypergraphParser found taking 1 args for class fr.univartois.cril.jkahypar.tools.HypergraphParser

(def hgp (HypergraphParser/HypergraphParser fs))

Syntax error (IllegalArgumentException) compiling . at (/private/var/folders/dz/8plg36qs1r50kjb6wvn4dwh00000gn/T/form-init7854241673144140259.clj:1:10).
No matching method HypergraphParser found taking 1 args for class fr.univartois.cril.jkahypar.tools.HypergraphParser

我尝试了各种不同的变体,但似乎都没有
效果。

有没有办法获得(反射?)这个类上的可用方法,可能会让我知道哪里出了问题?我习惯于使用Cursive IDE弹出的提示(例如,告诉我它认识HypergraphParser),但当我在这个类后输入斜杠时没有得到任何提示?

有什么想法?请告诉我,我犯了什么错误?

已关闭,备注: 已解决

1 个答案

+1

已选中
 
最佳答案

构造函数调用: (HypergraphParser. tf)

你尝试 (ClassName/ClassName arg),所以Clojure正在寻找类 ClassName 内的 (静态) 方法 ClassName

就这些,非常感谢Sean! 现在我发现文档中提到了尾部点和构造函数的新特殊形式;一度失明,现在我看清了。
...