Jak Mogę dodać Jary do ścieżki klasowej, gdy wywołuję Jython * bez * dodawania ich do $CLASSPATH?

Chciałbym zrobić coś podobnego do jython -cp FOO:BAR:BAZ argle.py.

Jeśli dodam FOO, BAR, i BAZ do $CLASSPATH to działa. Próbowałem dodać je do sys.path podczas biegu, ale to chyba nie działa w słoikach. To Działa jeśli dodam ścieżkę do rozszerzonych słoików do sys.path w czasie wykonywania. Czy istnieje prosta alternatywa dla eksplodowania plików jar? Rozszerzenie $CLASSPATH dla każdego użytkownika uruchamiającego ten skrypt nie jest akceptowalną alternatywą.

Dzięki.
Author: Hank Gay, 2009-02-11

4 answers

Możesz użyć opcji -D aby ustawić python.path:

jython -Dpython.path=FOO:BAR:BAZ argyle.py
 44
Author: awithrow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-17 14:03:21

jython polecenie obsługuje przekazywanie argumentów do polecenia java... Więc:

jython -J-cp JAR1:JAR2

Możesz zweryfikować wynikowe polecenie dodając --print switch:

jython -J-cp JAR1:JAR2 --print

Powyższe polecenie wyświetli rzeczywiste polecenie java zamiast je wykonywać.

 18
Author: Pat G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-19 01:37:05

Java-CP JAR1: JAR2: jython.jar org.python.util.jython pythonScript.py działa tutaj, zarówno na Linuksie, jak i Macintosh. W systemie Windows zamień dwukropki w ścieżkach klas na średniki i powinieneś być złoty.

 4
Author: hd1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 22:55:05

Możesz utworzyć duży słoik, który zawiera wszystkie powiązane klasy. Poniższy fragment mrówki pokazuje pomysł:

<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>
 3
Author: axelclk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-11 16:56:25