Я создаю приложение Java, которое загружает файлы Clojure. У меня возникли проблемы с созданием единого исполняемого банку. Я использую один-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();
Я думаю, что это означает, что он пытается получить информацию банки для внедренной банки, который на самом деле не существует в файловой системе. Он смотрит на это, чтобы увидеть, нужно ли перекомпилировать файл (например, common/core.clj
).
Я что-то не так? Есть ли другой способ создать исполняемый банку (с зависимостями), не запутывая Clojure?
Wow! Я могу увидеть как минимум 5 вещей, которые могут быть неудачными в этом кодексе. Это ваш код или другой API? Кстати, обычное решение (в отличие от одной банки) заключается в том, чтобы либо развернуть все банки, используя [JWS] (http://stackoverflow.com/tags/java-web-start/info), либо добавить манифест, который ссылается на зависимые Jars по относительным ссылкам, затем упакуйте их в установщик какой-либо формы. –