2017-02-17 5 views
0

Ich versuche, diesen Befehl in Python finden oder laden auszuführen:Fehler: Können keine Hauptklasse in Python

java JSHOP2.InternalDomain logistics 

Es funktioniert gut, wenn ich es in cmd laufen.

Ich schrieb dies in Python:

args = ['java', 
     r"-classpath", 
     r".;./JSHOP2.jar;./antlr.jar", 
     r"JSHOP2.InternalDomain", 
     thisDir+"/logistics" 
     ] 
    proc = subprocess.Popen(args, stdout=subprocess.PIPE) 
    proc.communicate() 

ich die JAR-Dateien im aktuellen Verzeichnis.

aber ich habe diesen Fehler: Fehler: Kann keine Hauptklasse finden oder laden JSHOP2.InternalDomain

Weiß jemand, was das Problem ist? kann es die JAR-Dateien nicht finden?

+1

Sie wollen wahrscheinlich das aktuelle Arbeitsverzeichnis für den Prozess einzustellen (die 'cwd' Stichwort Argument' Popen() '). –

+0

wie soll ich das machen? – user1393201

+0

Setzen Sie das Schlüsselwort 'cwd =' auf das Verzeichnis, das '.' im Klassenpfad darstellen soll. Das oder verwenden Sie absolute Pfade im Klassenpfad. –

Antwort

0

Sie können nicht darauf zählen, dass das aktuelle Arbeitsverzeichnis bei der Ausführung Ihres Python-Codes immer gleich ist.

proc = subprocess.Popen(args, stdout=subprocess.PIPE, 
         cwd='/directory/containing/jarfiles') 

Alternativ verwenden Sie absolute Pfade in Ihrem -classpath Command Argumente: ein Arbeitsverzeichnis mit dem cwd Argumente explizit festgelegt. Wenn dieser Weg thisDir ist, dann verwenden:

proc = subprocess.Popen(args, stdout=subprocess.PIPE, 
         cwd=thisDir) 
Verwandte Themen