40

我想做类似的事情jython -cp FOO:BAR:BAZ argle.py

如果我添加FOO, ,BAR和这个作品。我试图在运行时将它们添加到,但这似乎不适用于罐子。如果我在运行时添加扩展 jar 的路径,它确实有效。有没有一个简单的替代方法来爆炸 jar 文件?对每个运行此脚本的用户进行增强不是可接受的替代方案。BAZ$CLASSPATHsys.pathsys.path$CLASSPATH

谢谢。

4

4 回答 4

51

您可以使用该-D选项进行设置python.path

jython -Dpython.path=FOO:BAR:BAZ argyle.py
于 2009-02-25T14:58:12.603 回答
22

jython命令支持将参数传递给java命令...所以:

jython -J-cp JAR1:JAR2

您可以通过添加--print开关来验证生成的命令:

jython -J-cp JAR1:JAR2 --print

以上将打印出实际的 java 命令,而不是执行它。

于 2012-11-19T01:37:05.263 回答
5

java -cp JAR1:JAR2:jython.jar org.python.util.jython pythonScript.py在 Linux 和 Macintosh 上都可以在这里工作。在 Windows 上,将类路径中的冒号换成分号,您应该会很成功。

于 2012-10-03T22:55:05.090 回答
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>
于 2009-02-11T16:56:25.413 回答