Как я могу добавить jar-файлы в classpath, когда я вызываю Jython * без * добавления их в $ CLASSPATH? - PullRequest
34 голосов
/ 11 февраля 2009

Я бы хотел сделать что-то похожее на jython -cp FOO:BAR:BAZ argle.py.

Если я добавлю FOO, BAR и BAZ к $CLASSPATH, это работает. Я пытался добавить их к sys.path во время выполнения, но это не работает для банок. работает , если я добавляю путь к расширенным банкам в sys.path во время выполнения. Есть ли простая альтернатива взорвать файлы JAR? Увеличение $CLASSPATH для каждого пользователя, запускающего этот скрипт, не является приемлемой альтернативой.

Спасибо.

Ответы [ 4 ]

45 голосов
/ 25 февраля 2009

Вы можете использовать опцию -D для установки python.path:

jython -Dpython.path=FOO:BAR:BAZ argyle.py
19 голосов
/ 19 ноября 2012
Команда

jython поддерживает передачу аргументов в команду java ... Итак:

jython -J-cp JAR1:JAR2

Вы можете проверить полученную команду, добавив ключ --print:

jython -J-cp JAR1:JAR2 --print

Выше будет распечатывать фактическую команду Java вместо ее выполнения.

4 голосов
/ 04 октября 2012

java -cp JAR1:JAR2:jython.jar org.python.util.jython pythonScript.py работает здесь как на Linux, так и на Macintosh. В Windows поменяйте точки с запятой в классах на точки с запятой, и вы должны быть золотыми

3 голосов
/ 11 февраля 2009

Вы можете создать большой JAR, который содержит все связанные классы. Следующий фрагмент муравья показывает идею:

<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>
...