2011-12-02 19 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 *',否则你永远不会知道你输入了什么,什么不输入。 –