评论人:sonicsmooth
感谢您发布这个补丁。关于静态初始化器的问题一直使得在 AOT 和交互式开发下使用 JavaFX 变得困难。我今天克隆了 Clojure 1.9.0-master 源代码并应用了补丁,但示例 Clojure 项目仍然显示 "Running static initializers!" 我通过我的实际使用场景进行了验证。如果先启动一个 JFXPanel,错误就会消失。截至 2017 年 9 月,有没有什么解决方案,比如另一种定义代理或延迟到运行时的方式?谢谢。
$ lein clean;leon 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: )))
CompilerException java.lang.ExceptionInInitializerError, compiling:(C:\dev\clojure\clojure-static-initialization\target\f31ee90298a1be447b450330204c3c0806c08b96-init.clj:1:10)
$ lein clean;leon 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