有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Enum Normalizer的unicode Clojure Java互操作。类型

我花了很长时间试图弄明白如何在Clojure中使用Java互操作规范化Unicode。我一直在尝试使用java.text.Normalizer,但在尝试调用枚举Normalizer.Form.NFD时,我总是得到ClassNotFoundException。本质上,我只是想在Java中做一些类似的事情:

java.text.Normalizer.normalize("Ἑλλάς", java.text.Normalizer.Form.NFD);

我一直试图在Clojure做类似的事情,但没有成功:

(import java.text.Normalizer)
(java.text.Normalizer/normalize "Ἑλλάς" java.text.Normalizer.Form/NFD)

Normalizer/normalize似乎还可以,但在Normalizer.Form.NFD上的操作似乎是个问题,因为我一直在得到错误:

Caused by java.lang.ClassNotFoundException java.text.Normalizer.Form

我在Windows上使用:Clojure 1.8.0Java HotSpot(TM) 64-Bit Server VM 1.8.0_112-b15

我继续使用常规Java对其进行测试,结果很好。因此,该类安装在系统上。有人能告诉我我做错了什么吗?我叫错了吗?也许我还需要进口别的东西吗?非常感谢您的建议


共 (1) 个答案

  1. # 1 楼答案

    这会给您带来麻烦,因为Form是一个inner class。在字节码中,类outer.inner实际上表示为outer$inner。更多信息请参见in this SO questionthis google group post

    (import java.text.Normalizer
            java.text.Normalizer$Form)
    (java.text.Normalizer/normalize "Ἑλλάς" java.text.Normalizer$Form/NFD) ;; "Ἑλλάς"