2017-02-17 3 views
0

내가 파이썬에서이 명령을 실행하려고하고 메인 클래스를로드 할 수 없습니다 : 내가 cmd를 실행하면오류 : 찾거나 파이썬

java JSHOP2.InternalDomain logistics 

그것은 잘 작동합니다.

는 파이썬에서 쓴 :

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

나는 현재 디렉토리에있는 jar 파일이 있습니다.

하지만 난이 오류가있어 : 오류 : JSHOP2.InternalDomain

사람이 문제가 무엇인지 알고 있나요 주요 클래스를 찾거나로드 할 수 없습니다를? jar 파일을 찾을 수 없습니까?

+1

당신은 아마 프로세스의 현재 작업 디렉토리 (는 popen()''에'cwd' 키워드 인수)를 설정합니다. –

+0

어떻게해야합니까? – user1393201

+0

'cwd ='키워드 인자를 클래스 패스에 표현하기를 원하는 디렉토리에 설정하십시오. 그것 또는 클래스 패스에서 절대 경로를 사용하십시오. –

답변

0

파이썬 코드를 실행할 때 항상 현재 작업 디렉토리를 같게 할 수는 없습니다.

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

는 다른 방법으로, 당신의 -classpath 명령 행 인수에 절대 경로를 사용 : 명시 적으로 cwd 인수를 사용하여 작업 디렉토리를 설정합니다. 그 경로가 thisDir 경우, 그 사용

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