由 sonicsmooth 发布的评论:
感谢你发布这个补丁。static初始化器的问题使使用AOT和交互式开发JavaFX变得困难。我今天克隆了Clojure 1.9.0-master源代码并应用了这个补丁,但示例Clojure项目仍然显示"正在运行静态初始化程序!"我验证了这是我的实际用例中的情况。如果我首先启动JFXPanel,错误就会消失。截至2017年9月,有没有什么解决方案,比如定义代理的其他方式或推迟到运行时?谢谢。
$ lein clean;lein repl
将1个源文件编译到 C:\dev\clojure\clojure-static-initialization\target\classes
编译 clojure-static-initialization.gen-class-demo
编译 clojure-static-initialization.proxy-demo
运行静态初始化程序!
Clojure 1.9.0-master-SNAPSHOT
user=> (def lcp (proxy (link: javafx.scene.control.ListCell) (link: )))
在编译:(C:\dev\clojure\clojure-static-initialization\target\f31ee90298a1be447b450330204c3c0806c08b96-init.clj:1:10)发生编译异常 java.lang.ExceptionInInitializerError
$ lein clean;lein repl
将1个源文件编译到 C:\dev\clojure\clojure-static-initialization\target\classes
编译 clojure-static-initialization.gen-class-demo
编译 clojure-static-initialization.proxy-demo
运行静态初始化程序!
Clojure 1.9.0-master-SNAPSHOT
user=> (def jfxpanel (javafx.embed.swing.JFXPanel.))
'user/jfxpanel
user=> (def lcp (proxy (link: javafx.scene.control.ListCell) (link: )))
'user/lcp