这里的问题可能与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}
)