我正在使用带有 Clojure 的 java 库。java 库只需要在编译时创建一个对象。通过 uberjar(使用 leiningen 创建)部署应用程序时,无法正确创建此配置对象而不会出现错误。
我可以通过宏在仅编译时创建对象。问题是它不可序列化。当应用程序通过 uberjar 运行时,如何使 jvm 可以使用此对象?将对象放入原子中不起作用,因为原子在加载时/运行时为运行 jar 的新 jvm 实例重置。编译时 jvm 需要一种方法将此对象放入其中一个 aot 编译类中。(gen-class) 似乎不起作用,因为它只能在运行时通过初始化程序初始化状态。