我想做类似的事情jython -cp FOO:BAR:BAZ argle.py
。
如果我添加FOO
, ,BAR
和这个作品。我试图在运行时将它们添加到,但这似乎不适用于罐子。如果我在运行时添加扩展 jar 的路径,它确实有效。有没有一个简单的替代方法来爆炸 jar 文件?对每个运行此脚本的用户进行增强不是可接受的替代方案。BAZ
$CLASSPATH
sys.path
sys.path
$CLASSPATH
谢谢。
您可以使用该-D
选项进行设置python.path
:
jython -Dpython.path=FOO:BAR:BAZ argyle.py
jython
命令支持将参数传递给java
命令...所以:
jython -J-cp JAR1:JAR2
您可以通过添加--print
开关来验证生成的命令:
jython -J-cp JAR1:JAR2 --print
以上将打印出实际的 java 命令,而不是执行它。
java -cp JAR1:JAR2:jython.jar org.python.util.jython pythonScript.py
在 Linux 和 Macintosh 上都可以在这里工作。在 Windows 上,将类路径中的冒号换成分号,您应该会很成功。
您可以创建一个包含所有相关类的大 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>