【发布时间】:2012-12-27 15:24:53
【问题描述】:
我用一个简单的 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?
【问题讨论】:
标签: swing clojure leiningen uberjar