2011-12-02 7 views
1

HecDSS에서 정보를 읽고 쓰는 중입니다. 난 그냥 시도하고NameError 수정 방법 : HecDSS Python 스크립트에서 Java 오류가 발생했습니다.

from hec.script import * 
    from hec.hecmath import * 
    from java import * 


    try: 
     dssFile = DSS.open("C:/Documents and Settings/SWP/Desktop/MVCA.dss") 
     outflow = dssFile.read("/MAITLAND VALLEY/BLYTH/PRECIP-INC/01DEC2011/30MIN/OBS/") 
     newOutflow = outflow.add(10.) 

     path = DSSPathname(newOutflow.getPath()) 
     fPart = path.fPart() + " Test" 
     path.setFPart(fPart) 
     newOutflow.setPathname(path.getPathname()) 

     dssFile.write(newOutflow) 

    except java.lang.Exception, e : 
     MessageBox.showError(e.getMessage(), "Error reading data") 

:

ScriptEngine.execute:Error in script Traceback (innermost last): 
     File "<string>", line 13, in ? 
    NameError: java 

내가 지금 사용하고 기본 코드는 : 나는 내가이 오류가 시작 아침을 열 때를 ​​제외하고 미세 지난 밤에 작업이 스크립트를했다 갑자기 왜 작동하지 않는지를 알아 내야합니다. 어떤 도움을 주셔서 감사합니다!

답변

1

* 가져 오기는 모듈에서 로컬 이름 공간으로 모든 이름을 가져옵니다. 그래서 당신이 :

from java import * 

그리고 java 모듈은 lang라는 서브 모듈을 가지고, 당신은 lang하지 java.lang으로 액세스 할 수 있습니다.

나는 자이 썬에 대해 충분히 잘 모르겠지만, 난 당신이 이런 식으로 뭔가 할 생각 : 당신이 java.lang.Exception으로 예외를 참조 할 수 있습니다

import java.lang 

하는 경우입니다.

왜 이전에 작동했는지에 관해서는, 전에 예외를 제기하지 않았을 것입니다. 이제는 시도하고 catch하려고 시도하지만 예외 유형을 찾을 수 없습니다.

+0

귀하의 회신이 정확히 제가 요구 한 해결책이 아니었지만 올바른 방향으로 나를 이끌었습니다. 어떻게 든이 libc (hec.heclib.dss import *에서)를 가져 오는 것을 잊었습니다. – Glynbeard

+0

그러면 가져온 모듈 중 일부가 로컬 네임 스페이스에'java'를 가져 왔기 때문에 우연히 만 작동합니다. 가장 좋은 충고는'from ... import *'의 사용을 멈추는 것입니다. 그렇지 않으면 수입 한 것과 복용하지 않은 것을 결코 알 수 없습니다. –