Reputation: 71999
I'd like to do something similar to jython -cp FOO:BAR:BAZ argle.py
.
If I add FOO
, BAR
, and BAZ
to $CLASSPATH
this works. I tried to add them to sys.path
at run-time, but that doesn't appear to work for jars. It does work if I add a path to the expanded jars to sys.path
at runtime. Is there a simple alternative to exploding the jar files? Augmenting $CLASSPATH
for every user that runs this script is not an acceptable alternative.
Thanks.
Upvotes: 40
Views: 35444
Reputation: 34677
java -cp JAR1:JAR2:jython.jar org.python.util.jython pythonScript.py
works here, both on Linux and Macintosh. On Windows, swap the colons in the classpaths for semicolons and you should be golden.
Upvotes: 7
Reputation: 1113
You can use the -D
option to set python.path
:
jython -Dpython.path=FOO:BAR:BAZ argyle.py
Upvotes: 51
Reputation: 221
jython
command supports passing arguments through to the java
command... So:
jython -J-cp JAR1:JAR2
You can verify the resulting command by adding --print
switch:
jython -J-cp JAR1:JAR2 --print
The above will print out the actual java command instead of executing it.
Upvotes: 22
Reputation: 958
You can create a big JAR which contains all related classes. The following ant snippet shows the idea:
<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>
Upvotes: 3