Comment faire pour exécuter le pot à partir de "lein pot' de la commande?
C'est un suivi pour cette question.
Après l'exécution de 'lein pot', j'obtiens 'myproject-1.0.0-SNAPSHOT.jar" qui ne contient pas de clojure-1.2.0-beta1.jar et clojure-contrib-1.2.0-beta1.jar.
Et de l'exécution "lein uberjar" donne-moi deux fichiers jar. Le premier (qui se termine par -standalone.jar) est le pot contient tout, et le second est le même que le jar généré avec "lein pot'.
C'est la question du bocal avec le second. Il n'y a pas de problème avec le premier pot, comme je l'ai expliqué dans le précédent post.
Quand je lance
java -cp PATH_TO_THE_CLOJURE_AND_CONTRIB.jar:$CLASSPATH -jar myproject-1.0.0-SNAPSHOT.jar'
J'obtiens l'erreur suivante.
Causés par: java.lang.ClassNotFoundException: clojure.lang.IFn à java.net.URLClassLoader$1.exécuter(URLClassLoader.java:202) à java.de sécurité.AccessController.doPrivileged(Native method) à java.net.URLClassLoader.findClass(URLClassLoader.java:190) à java.lang.Chargeur de classe.loadClass(ClassLoader.java:307) au coucher du soleil.misc.Lanceur$AppClassLoader.loadClass(Lanceur.java:301) à java.lang.Chargeur de classe.loadClass(ClassLoader.java:248)
Ce qui ne va pas, je pensais que je peux utiliser le " myproject-1.0.0-SNAPSHOT.jar de la même façon avec 'myproject-1.0.0-SNAPSHOT-standalone.jar" si je point pour les fichiers jar à l'aide de pc-option.
Est-il rien de plus que j'ai eu à faire?
AJOUTÉ
java -cp ALLTHE_JAR_PATH myproject.de base
résout le problème.
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aide de Leiningen 1.2, vous êtes probablement touché par un bug où les dépendances sont supprimés avant la création d'un uberjar (évidemment vaincre le point de uberjar). Veuillez revenir à 1.1 et attendre pour la nouvelle version (qui devrait arriver sous peu) ou l'utilisation d'une caisse de lein de sa TÊTE (comme décrit dans la section sur le piratage Leiningen en lein README).
Une fois que vous faites cela, vous devriez être en mesure de produire un autonome pot avec
lein uberjar
et direjava -jar name-of-your-standalone.jar
pour lancer vos app.Comme alternative, vous pouvez créer une jarre avec
lein jar
et dire quelque chose commejava -cp '$PROJECT_ROOT/lib/*:your-app.jar' your-app.main
(oùyour-app.main
est votre principal des applications de classe; aussi, remplacer$PROJECT_ROOT
avec le chemin d'accès approprié et fournir un chemin d'accès àyour-app.jar
, bien sûr). Lelib/*
chose ne fonctionne que sur JDK 1.6; avec 1.5 vous devez inclure tous les jar séparément. Noter que lors de l'utilisation de-jar
,-cp
et$CLASSPATH
sont ignorés; seuls le chemin de la classe spécifiée dans le bocal du manifeste (le cas échéant) est pris en compte.-jar
,-cp
est ignoré (et est donc$CLASSPATH
). Vous aurez à utiliser-cp
et spécifier la classe principale à la main (si elleyour-app.main
, direjava -cp ... your-app.main
, avec tous les paramètres à votremain
méthode (= le Clojure fonction-main
) à la fin). Je devrais l'avoir remarqué la lecture de la question... va monter dans la réponse.clojure.jar
etclojure-contrib.jar
pour vous, alors c'est pas de travail sans problème. Y compris les dépendances est le point de l'ensemble de uberjar! (Et il rend l'utilisation dejava -jar
possible.)-jar
de toute façon. Merci pour cela!