Подтвердить что ты не робот

Как добавить jars в путь к классам при вызове Jython * без добавления их в $CLASSPATH?

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

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

Спасибо.

4b9b3361

Ответ 1

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

jython -Dpython.path=FOO:BAR:BAZ argyle.py

Ответ 2

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

jython -J-cp JAR1:JAR2

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

jython -J-cp JAR1:JAR2 --print

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

Ответ 3

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

Ответ 4

Вы можете создать большой 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>