Как исправить NameError: ошибка Java в скрипте HecDSS Python - PullRequest
1 голос
/ 02 декабря 2011

Я работаю над чтением и записью информации в 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 голос
/ 02 декабря 2011

Импорт * импортирует все имена из модуля в локальное пространство имен. Так ты делаешь:

from java import *

И у модулей java есть подмодуль под названием lang, доступ к нему можно получить как lang, а не java.lang.

Я недостаточно знаю о Jython, но я думаю, что вы хотите что-то вроде этого:

import java.lang

В этом случае вы можете ссылаться на исключение как java.lang.Exception.

Что касается того, почему это работало раньше, то, вероятно, никогда раньше не создавало исключений. Теперь он это сделал и пытается его перехватить, но не может найти тип исключения.

...