我用一个简单的 Swing gui 在 Clojure 中制作了一个时髦的应用程序,其中包含一些带有一些图标的 JButton,我希望我的非程序员朋友也能够使用它。
当我使用“lein run”启动它时,它在我自己的计算机上一切正常,但是当我使用“lein uberjar”创建一个包并运行它时,图标消失了,JButtons 为空白。
图标是项目根目录中“resources”文件夹中的 .png,打包后在 .jar 中可见。要加载图标,我这样做:
(defn get-icon [icon]
(.getFile (clojure.java.io/resource icon)))
(def some-button (JButton. (ImageIcon. (get-icon "foo.png"))))
我试图放入一个小打印语句来查看发生了什么:
(println (get-icon "foo.png"))
当做'lein run'时,它会打印
/home/pelle/lein/foo/resources/foo.png
并且在打包的 .jar 上执行“java -jar”时会打印
file:/home/pelle/lein/foo/target/znuli-0.1.2-standalone.jar!/foo.png
这正是 foo.png 所在的位置(除了我不完全确定感叹号发生了什么),但它仍然没有在 Swing gui 中绘制。
我也尝试过明确指定 project.clj 中的资源文件夹
:resource-paths ["resources"]
但它什么也没改变。
所以基本上我的问题可以归结为:如何使用'lein uberjar'来创建一个工作的hello-world.jar,其中包含一个包含自定义png图像的JButton?