我想做一些与jython -cp FOO:BAR:BAZ argle.py
类似的事情。
如果我将FOO
,BAR
和BAZ
添加到$CLASSPATH
,则可行。我尝试在运行时将它们添加到sys.path
,但这似乎不适用于jar。如果我在运行时将扩展jar的路径添加到sys.path
, 可以正常工作。是否有一个简单的替代方案来爆炸jar文件?对于运行此脚本的每个用户,增加$CLASSPATH
是不可接受的替代方案。
感谢。
答案 0 :(得分:45)
您可以使用-D
选项设置python.path
:
jython -Dpython.path=FOO:BAR:BAZ argyle.py
答案 1 :(得分:19)
jython
命令支持将参数传递给java
命令......所以:
jython -J-cp JAR1:JAR2
您可以通过添加--print
开关验证生成的命令:
jython -J-cp JAR1:JAR2 --print
上面将打印出实际的java命令而不是执行它。
答案 2 :(得分:4)
java -cp JAR1:JAR2:jython.jar org.python.util.jython pythonScript.py
适用于Linux和Macintosh。在Windows上,将类路径中的冒号换成分号,你应该是金色的。
答案 3 :(得分:3)
您可以创建一个包含所有相关类的大型JAR。以下ant片段显示了这个想法:
<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>