Unterprozessaufruf in Python zum Aufrufen von Java-JAR-Dateien mit JAVA_OPTS

8

Beispielcode:

%Vor%

Wie spezifiziert man JAVA_OPTS im obigen Befehl? Ich erhalte einen 'java.lang.OutOfMemoryError: kann keinen neuen nativen Thread erstellen', wenn ich den obigen Befehl benutze und ich denke, die Angabe von JAVA_OPTS in dem Befehl würde das Problem lösen.

Ich habe JAVA_OPTS in der .bashrc-Datei angegeben und es hatte keine Auswirkung.

    
user1164061 07.02.2013, 22:14
quelle

2 Antworten

11

Sie können dies tun, aber zu finden, wie man es in der Dokumentation macht, ist eine wilde Jagd.

Die subprocess.call() -Dokumentation lautet:

  

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)   Die oben gezeigten Argumente sind nur die häufigsten, die unten in Häufig verwendete Argumente (daher die etwas ungerade Schreibweise in der abgekürzten Signatur).

Dann sagt der Abschnitt Häufig verwendete Argumente , ganz am Ende nach der Beschreibung einer Reihe anderer Argumente:

  

Diese Optionen werden zusammen mit allen anderen Optionen ausführlicher in % beschrieben. co_de% Konstruktordokumentation.

Na dann! Die Popen -Dokumentation enthält die vollständige Signatur:

  

Popen

class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0) ist die, die Sie wollen! Wenn Sie jedoch env übergeben, überschreibt dies die alle Umgebungsvariablen, einschließlich stuff wie env={'JAVA_OPTS': 'foo'} , was andere Dinge beeinträchtigen könnte. Sie möchten wahrscheinlich Code wie diesen verwenden, um eine CLASSPATH -Umgebungsvariable für die neue Prozessausführung hinzuzufügen, ohne sie im aktuellen Prozess zu setzen:

%Vor%     
andrewdotn 08.02.2013, 00:31
quelle
6

Sie müssen JAVA_OPTS nicht verwenden - geben Sie einfach weitere Argumente an call() an. Zum Beispiel:

%Vor%     
andersschuller 07.02.2013 22:42
quelle

Tags und Links