2011-12-02 37 views
1

我正在閱讀和寫入HecDSS中的信息。我有這個腳本工作正常,昨晚除了今天早上我開始收到此錯誤,當我打開一看:如何修復NameError:HecDSS Python腳本中的Java錯誤

ScriptEngine.execute:Error in script Traceback (innermost last): 
     File "<string>", line 13, in ? 
    NameError: 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") 

我只是想弄清楚它爲什麼突然不起作用。謝謝你的幫助!

回答

1

*導入將模塊中的所有名稱導入本地名稱空間。所以,你這樣做:

from java import * 

而且java模塊有一個名爲lang子模塊,您可以訪問它作爲lang,不java.lang

我不知道有足夠的瞭解Jython的,但是我認爲你想是這樣的:

import java.lang 

在這種情況下,你可以參考異常爲java.lang.Exception

至於爲什麼它以前工作過,它可能從來沒有提出過例外。現在它做了,它試圖捕捉它,但它找不到異常類型。

+0

雖然你的回答並不完全是我所需要的解決方法,但確實讓我朝着正確的方向前進。我忘了導入一些庫(從hec.heclib.dss導入*)不知何故,這固定了一切。 – Glynbeard

+0

然後我猜它只是偶然的工作,因爲一些導入的模塊也將'java'導入到它的本地名稱空間中。最好的建議是停止使用'from ... import *',否則你永遠不會知道你輸入了什麼,什麼不輸入。 –