图标消失在用Leiningen制作的uberjar中

我用一个简单的Swing gui在Clojure中做了一个时髦的应用程序,其中包含一些带有一些图标的JButtons,我希望我的非程序员朋友也能够使用它。

当我用'lein run'启动它时,它在我自己的计算机上工作良好,但是当我使用'lein uberjar'创建一个包并运行它时,图标已经消失而使JButton空白。

这些图标在项目根目录的“资源”文件夹中为.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'创建一个包含自定义png图像的JButton的工作hello-world.jar?


ImageIcon应该在URL上正常工作。 放下.getFile调用,直接使用clojure.java.io/resource的结果。

链接地址: http://www.djcxy.com/p/51733.html

上一篇: Icons disappearing in uberjar made with Leiningen

下一篇: Leiningen Uberjar different results from lein run