【发布时间】:2019-03-07 06:28:47
【问题描述】:
我怀疑这可能与 java-interop 有关,因为我在代码中调用了很多 java 功能。
当我在我的 REPL(通过 emacs)中运行以下命令时,它完全可以正常工作
(def height 100)
(def image (BufferedImage. width height BufferedImage/TYPE_INT_ARGB))
(def graphics (.createGraphics image))
(.setColor graphics Color/black)
(for [x (range 0 width 10)]
(.drawLine graphics x 0 x height ))
(for [y (range 0 height 10)]
(.drawLine graphics 0 y width y))
(ImageIO/write image "png" (io/file "output.png"))
已正确生成网格图像。
但是,如果我执行 C-c C-k,它会生成一个空白图像。
现在,当我将它插入一个函数并通过 lein run 运行它时,我收到一条我不明白的警告:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by clojure.lang.InjectedInvoker/1832669781 (file:/home/n/.m2/repository/org/clojure/clojure/1.10.0/clojure-1.10.0.jar) to method sun.java2d.SunGraphics2D.setColor(java.awt.Color)
WARNING: Please consider reporting this to the maintainers of clojure.lang.InjectedInvoker/1832669781
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
我对clojure知之甚少,对java更是知之甚少,但我运行的是openjdk 10。
我相信我的代码编写正确(尽管写得很糟糕),这是我的代码有问题还是 clojure 问题?
【问题讨论】:
标签: clojure clojure-java-interop