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

欢迎!请参阅关于页面以了解有关此如何工作的一些更多信息。

0
Java互操作

这里的问题可能与pf4j默认的类加载器更相关,但仍然如此

我有一个Clojure插件生成一个类

(gen-class
 :name myplugin.SomeExtension
 :implements [plugin.SomeExtensionPoint]
 :prefix "-"
 :impl-ns my-plugin.some-extension)

我的Clojure应用程序使用pf4j加载了插件jar。当它使用lein jar编译时,类加载成功(但那时我自然必须在应用程序的project.clj中添加任何插件依赖项)。当使用lein uberjar编译时,它失败

 Execution error (IllegalStateException) at myplugin.SomeExtension/<clinit> (REPL:-1).
; Attempting to call unbound fn: #'clojure.core/refer

调用堆栈顶

jdk.internal.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2)
jdk.internal.reflect.NativeConstructorAccessorImpl/newInstance (NativeConstructorAccessorImpl.java:62)
jdk.internal.reflect.DelegatingConstructorAccessorImpl/newInstance (DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor/newInstance (Constructor.java:490)
java.lang.Class/newInstance (Class.java:584)
org.pf4j.DefaultExtensionFactory/create (DefaultExtensionFactory.java:38)
org.pf4j.ExtensionWrapper/getExtension (ExtensionWrapper.java:37)
org.pf4j.AbstractPluginManager/getExtensions (AbstractPluginManager.java:971)

我已经努力过,但我不确定这里具体发生了什么以及如何解决这个问题?
任何想法都最受欢迎!

(并且uberjar配置使用{:aot :all :omit-source true})

登录注册以回答此问题。

...