Вопрос

Это последующее наблюдение за этот вопрос.

После того, как бежал «Lein Jar», я получаю «MyProject-1.0.0-Snapshot.jar», который не содержит clojure-1.2.0-beta1.jar и clojure-app - 1.2.0-beta1.jar.

И бег «Лейн Убергар» дает мне две файлы JAR. Первый (который заканчивается с -stastalone.jar), банка содержит все, а вторая такая же, как банка, генерируемая с помощью «Lein Jar».

Это вопрос банки со вторым. Там нет проблем с первой баной, как я объяснил в предыдущем сообщение.

Когда я бегу

Java -CP PATH_TO_THE_CLOJURE_AND_CONTRIB.JAR: $ CASSPATH -JAR MyProject-1.0.0-Snapshot.jar '

, Я получаю следующую ошибку.

Вызванные: java.lang.classnotfoundException: clojure.lang.ifn в java.net.urlclasslassLoader $ 1.run (urlclasslaussloader.java:202) в java.security.accessController.doprivileged (родной метод) в Java.net.urlclasslassloader.findclass (URLClassLoader.java:190) на java.lang.classloader.gloadlass (classloader.java:307) на sun.misc.launcher $ appclassloader.loadclass (launcher.java:301) на java.lang.classloader.loader.loadclass (ClassLoader. Java: 248)

Что может быть неправильно, я подумал, что могу использовать «MyProject-1.0.0-Snapshot.jar так же, с помощью myProject-1.0.0 - Snapshot-standalone.jar», если я указываю на файлы JAR, используя опцию -CP.

Есть ли что-нибудь еще, что я должен был сделать?

ДОБАВЛЕН

java -cp allthe_jar_path myproject.core

решает проблему.

Это было полезно?

Решение

Если вы используете Leinceen 1.2, вы, вероятно, пострадаете от ошибки, в результате чего зависимости будут удалены до создания Убергара (явно побеждая точку Uberjar). Пожалуйста, либо понижените на 1,1 и дождитесь нового выпуска (который должен быть в ближайшее время) или использовать оформление головы Лейна (как описано в разделе на взломать Лейнинген в readme).

Как только вы это сделаете, вы должны быть в состоянии произвести автономную банку с lein uberjar и скажи java -jar name-of-your-standalone.jar Чтобы запустить ваше приложение.

В качестве альтернативы вы можете создать обычную банку с lein jar и сказать что-то вроде java -cp '$PROJECT_ROOT/lib/*:your-app.jar' your-app.main (куда your-app.main является основным классом вашего приложения; Также заменить $PROJECT_ROOT с соответствующим путем и поставьте путь к your-app.jar, конечно). То lib/* вещь будет работать только на JDK 1.6; С 1.5 вам придется включить каждую банку отдельно. Обратите внимание, что при использовании -jar, -cp а также $CLASSPATH игнорируются; Только класса, указанная в манифесте JAR (если таковая имеется) учитывается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top