如何修复HecDSS Python脚本中的NameError: Java错误

1 投票
1 回答
1452 浏览
提问于 2025-04-17 07:32

我正在处理在HecDSS中读取和写入信息的工作。昨晚我的脚本运行得很好,但今天早上打开它时却开始出现这个错误:

    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 个回答

1

使用 * 导入会把模块里的所有名字都引入到本地的命名空间里。也就是说,如果你这样做:

from java import *

那么 java 模块里有一个叫 lang 的子模块,你可以直接用 lang 来访问它,而不是 java.lang

我对 Jython 了解不多,但我觉得你可能想要的是这样的:

import java.lang

这样的话,你就可以把这个异常称作 java.lang.Exception

至于为什么之前能正常工作,可能是因为之前从来没有抛出过异常。现在抛出了异常,它试图去捕捉,但找不到这个异常的类型。

撰写回答