Создание исполняемого фляги, которая убирает строки Clojure - PullRequest
3 голосов
/ 14 октября 2011

Я создаю приложение Java, которое загружает файлы Clojure. У меня проблемы с созданием одной исполняемой банки. Я использую One-Jar, но я получаю исключение при попытке запустить файл jar:

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

Когда я смотрю на строку, которая ее вызывает, кажется, что она пытается получить информацию о jar для файлов относительного класса:

    return ((JarURLConnection) url.openConnection()).getJarFile()
           .getEntry(libfile).getTime();

Я думаю, это означает, что он пытается получить информацию о jar для встроенного jar, которого фактически нет в файловой системе. Он смотрит на это, чтобы увидеть, нужно ли перекомпилировать файл (например, common/core.clj).

Я что-то не так делаю? Есть ли какой-то другой способ создать исполняемый файл jar (с зависимостями), не путая Clojure?

1 Ответ

2 голосов
/ 11 апреля 2012

Я пришел к выводу, что это ошибка в Clojure.Я могу добавить одну нулевую проверку (непосредственно перед вызовом .getTime()), и она работает правильно.Я ввел ошибку в Jira Clojure: http://dev.clojure.org/jira/browse/CLJ-971

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...