3
我正在構建一個加載Clojure文件的Java應用程序。我無法制作一個可執行的jar文件。我使用的是單罐,但我得到一個例外,當我嘗試運行jar文件:製作一個可執行的jar文件,用於清除Clojure字符串
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.simontuffs.onejar.Boot.run(Boot.java:340)
at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.ExceptionInInitializerError
at com.ziroby.clojure.App.main(App.java:14)
... 6 more
Caused by: java.lang.NullPointerException
at clojure.lang.RT.lastModified(RT.java:374)
at clojure.lang.RT.load(RT.java:408)
at clojure.lang.RT.load(RT.java:398)
at clojure.lang.RT.doInit(RT.java:434)
at clojure.lang.RT.<clinit>(RT.java:316)
... 7 more
當我看這是造成它的線,它似乎是試圖獲得罐子信息相關的類文件:
return ((JarURLConnection) url.openConnection()).getJarFile()
.getEntry(libfile).getTime();
我認爲這意味着它試圖獲取一個嵌入式jar的jar信息,它實際上並不存在於文件系統中。它正在研究是否需要重新編譯一個文件(如common/core.clj
)。
我做錯了什麼?有沒有其他的方式來創建一個可執行的jar(與依賴)而不會混淆Clojure?
哇!我可以看到至少5件可能在單個代碼語句中失敗的東西。它是你的代碼還是其他API?順便說一句,通常的解決方案(與單個jar相反)是使用[JWS](http://stackoverflow.com/tags/java-web-start/info)部署所有的Jars,或者添加一個清單來引用依賴相對引用的Jars,然後將它們打包成某種形式的安裝程序。 –