No se pudo obtener el entorno, + java.lang.ExceptionInInitializerError, Traceback IOError: File not found -

Ejecuto Windows 7 en un sistema de 64 bits. Yo uso netbeans 6.9.1 (los complementos de Python están instalados) Instalado también: Python 2.7.1 (64), JDK 6 update 24 (64),

Estoy interesado en la extracción de términos, así que descargué montylingua, que se supone que se ejecuta en Java o Python. Este es el enlace: http://web.media.mit.edu/~hugo/montylingua/

Cuando intento ejecutar el código Sample.java incluido en el archivo zip disponible, encuentro estos problemas:

****** MontyLingua v.2.1 ******
***** by hugo@media.mit.edu *****
Failed to get environment, environ will be empty: (0, 'Failed to execute command ([\'sh\', \'-c\', \'env\']):
java.io.IOException: Cannot run program "sh": CreateProcess error=2, The system cannot find the file specified')

java.lang.ExceptionInInitializerError
Caused by: Traceback (innermost last):
  File "C:\work\montylingua-2.0\copy\JMontyLingua.py", line 0, in __init__ 
  File "C:\work\montylingua-2.0\copy\MontyLingua.py", line 0, in __init__ 
  File "C:\work\montylingua-2.0\copy\MontyLemmatiser.py", line 0, in __init__ 

IOError: File not found - 
    at org.python.core.Py.IOError(Py.java)
    at org.python.core.PyFile._setup(PyFile.java)
    at org.python.core.PyFile.<init>(PyFile.java)
    at org.python.core.__builtin__.open(__builtin__.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
    at org.python.core.PyObject.__call__(PyObject.java)
    at montylingua.MontyLemmatiser$_PyInner.__init__$5(MontyLemmatiser.java:5312)
    at montylingua.MontyLemmatiser$_PyInner.call_function(MontyLemmatiser.java:5219)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyFunction.__call__(PyFunction.java)
    at org.python.core.PyInstance.__init__(PyInstance.java)
    at org.python.core.PyClass.__call__(PyClass.java)
    at org.python.core.PyObject.__call__(PyObject.java)
    at montylingua.MontyLingua$_PyInner.__init__$1(MontyLingua.java:218)
    at montylingua.MontyLingua$_PyInner.call_function(MontyLingua.java:163)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyFunction.__call__(PyFunction.java)
    at org.python.core.PyInstance.__init__(PyInstance.java)
    at org.python.core.PyClass.__call__(PyClass.java)
    at org.python.core.PyObject.__call__(PyObject.java)
    at montylingua.JMontyLingua$_PyInner.__init__$1(JMontyLingua.java:85)
    at montylingua.JMontyLingua$_PyInner.call_function(JMontyLingua.java:63)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyTableCode.call(PyTableCode.java)
    at org.python.core.PyFunction.__call__(PyFunction.java)
    at org.python.core.PyInstance.__init__(PyInstance.java)
    at org.python.core.Py.initProxy(Py.java)
    at montylingua.JMontyLingua.__initProxy__(JMontyLingua.java:256)
    at montylingua.JMontyLingua.<init>(JMontyLingua.java:234)
    at montylinguaapplication.MontySample.<clinit>(MontySample.java:8)
Could not find the main class: montylinguaapplication.MontySample.  Program will exit.
Exception in thread "main" Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

Estoy familiarizado con Java ya que tengo una pequeña experiencia en programación con él. No sé nada de Python. He configurado la variable de entorno "MONTYLINGUA" que es necesaria para que el programa se ejecute.

He visto una publicación sobre Jython de alguien que recibe el mismo primer error que yo, pero no pude hacer nada de las cosas propuestas. (el enlace de la otra publicación: Jython - javaos.getenv () da "No se pudo obtener el entorno, el entorno estará vacío")

Cualquiera que pueda ejecutar este archivo .java correctamente puede recomendar algo.

También puedo subir el código java, pero creo que está obsoleto ya que está disponible y es fácil de encontrar en el sitio mencionado ...

En el proyecto incluí también el zip JyDT_Update_Site_1.4.15, en caso de que esto ayudara, pero desafortunadamente no pasó nada.

Tal vez tenga que agregar algún código en un archivo específico, como en el caso de la otra publicación, pero no sé en qué agregar qué, en mi sistema.

gracias por tu tiempo.

preguntado el 10 de mayo de 11 a las 13:05

4 Respuestas

Me parece que es el mismo problema que el de la publicación que vinculó.

'Error al ejecutar el comando ([\' sh \ ', \' - c \ ', \' env \ ']): java.io.IOException: No se puede ejecutar el programa "sh":

Implica que jython está configurado para pensar que se está ejecutando en un sistema UNIX de algún tipo.

contestado el 10 de mayo de 11 a las 18:05

La solución es configurar en el Jython archivo de registro la propiedad python.os.

Puede localizar el archivo de registro siguiendo estas instrucciones: http://www.jython.org/archive/21/docs/registry.html#finding.

Respondido 12 Feb 12, 20:02

Parece que el código de Python está intentando ejecutar un comando de shell. Pero, dado que está en Windows, esto no funciona.

Me hace preguntarme si esta es realmente la forma canónica de llegar al entorno en Python.

contestado el 10 de mayo de 11 a las 18:05

Cambié ese valor 'verdadero' a 'falso' en el archivo de registro de jython (ya que también instalé jython). Nada cambia... - Simos

y tal vez se trate de python, y no de jython (disculpe si me equivoco, pero realmente no tengo idea de cómo se relacionan estos dos). Tal vez python tenga un archivo de registro (aunque todavía no lo he encontrado), donde podría agregar algún código o cambiar algunos valores .... Simos

lo positivo es que puedo ejecutar la aplicación en python a través de la línea de comandos sin ningún error, pero esto no me ayuda para el propósito que quiero usar montylingua. En java a través de la línea de comandos va un poco más lejos que antes, pero aún hay "errores": ****** MontyLingua v.2.1 ****** ***** por hugo@media.mit.edu * **** ¡Lemmatizador está bien! ¡Se ha encontrado un léxico personalizado! ¡Cargando! ¡Rápido léxico encontrado! ¡Cargando! ¡Léxico está bien! LexicalRuleParser ¡OK! ContextualRuleParser ¡OK! Excepción en el hilo "main" Traceback (último interior): Archivo "C: \ work \ montylingua-2.0 \ copy \ MontyLingua.py", línea 0, en main - Simos

java.lang.IllegalAccessException: la clase org.python.core.PyReflectedFunction no puede acceder a un miembro de la clase java.lang.AbstractStringBuilder con los modificadores "pub lic" - Simos

Necesitará el compilador Sun Java, versión 1.4.2, instalado en su sistema. Sin él, tendrá problemas para ejecutar los ejemplos de Java de MontyLingua y no estamos seguros de si puede compilar MontyLingua en una DLL .NET. Busque en www.sun.com la versión 1.4.2 del kit de desarrollo de Java SE e instálelo.

Respondido 06 Jul 13, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.