38 votes

Comment puis-je ajouter des fichiers JAR au classpath lorsque j'appelle Jython * sans * les ajouter à $ CLASSPATH?

Je voudrais faire quelque chose de similaire à l' jython -cp FOO:BAR:BAZ argle.py.

Si j'ajoute FOO, BAR, et BAZ de $CLASSPATH cela fonctionne. J'ai essayé de les ajouter à l' sys.path au moment de l'exécution, mais qui ne semble pas fonctionner pour les pots. Il n' travail si j'ai ajouter un chemin d'accès à l'élargissement de pots sys.path lors de l'exécution. Est-il une simple alternative à l'explosion des fichiers jar? Augmentant $CLASSPATH pour chaque utilisateur qui exécute ce script n'est pas une alternative acceptable.

Merci.

49voto

awithrow Points 745

Vous pouvez utiliser l'option -D pour définir python.path :

 jython -Dpython.path=FOO:BAR:BAZ argyle.py
 

22voto

Pat G Points 81

jython prend en charge le passage d'arguments à la commande java ... Donc:

 jython -J-cp JAR1:JAR2
 

Vous pouvez vérifier la commande résultante en ajoutant --print switch:

 jython -J-cp JAR1:JAR2 --print
 

Ce qui précède imprimera la commande Java réelle au lieu de l’exécuter.

4voto

hd1 Points 11522

java -cp JAR1: JAR2: jython.jar org.python.util.jython pythonScript.py fonctionne ici, à la fois sous Linux et Macintosh. Sous Windows, remplacez les points-virgules des chemins de classes par des points-virgules. Vous devriez donc être en or.

3voto

axelclk Points 430

Vous pouvez créer un grand JAR contenant toutes les classes associées. L'extrait de fourmi suivant montre l'idée:

 <target name="jar">
	<mkdir dir="build/jar"/>
	<unjar src="lib/jython.jar" dest="${classes.dir}" />
	<unjar src="lib/FOO.jar" dest="${classes.dir}" />
	<unjar src="lib/BAR.jar" dest="${classes.dir}" />
	<unjar src="lib/BAZ.jar" dest="${classes.dir}" />

	<jar destfile="build/jar/bigjython.jar" basedir="${classes.dir}">
	    <manifest>
	        <attribute name="Main-Class" value="${main-class}"/>
	    </manifest>
	</jar>
</target>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X