我正在尝试为KSQL编写一个用户自定义函数。KSQL要求您提供一个带注释的Java类uberjar。我已经用gen-class和手动编写的用于与Clojure交互的Java文件都试过了。在两种情况下,uberjar都被正常加载,并且我的类注解通过反射被探测到。但是,当我执行任何涉及clojure的操作时,如Clojure.var("clojure.core", "require"),就会出现类似"java.lang.ExceptionInInitializerError"和"java.lang.NoClassDefFoundError: Could not initialize class clojure.java.api.Clojure"的异常。感觉我可能对uberjar的构建方式有所误解。或者,这可能是一个类加载器问题。KSQL明显进行了一些类路径隔离,以防用户自定义函数互相干扰。