无法获取环境,+ java.lang.ExceptionInInitializerError,Traceback IOError:找不到文件 -

时间:2011-05-10 13:36:11

标签: java python windows exception

我在64位系统上运行Windows 7。 我使用netbeans 6.9.1(已安装python插件) 也安装:Python 2.7.1(64),JDK 6更新24(64),

我对术语提取很感兴趣所以我下载了montylingua,它应该用Java或/和Python运行。 这是链接:http://web.media.mit.edu/~hugo/montylingua/

当我尝试运行zip文件中包含的Sample.java代码时,我遇到了这些问题:

****** 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)

我熟悉Java,因为我有一些小的编程经验。我对Python一无所知。 我已经设置了运行程序所必需的环境变量“MONTYLINGUA”。

我看到一篇关于Jython的帖子来自与我一样的第一次错误的人,但是我无法从提议的事情做任何事情。 (其他帖子的链接:Jython - javaos.getenv() gives "Failed to get environment, environ will be empty"

任何能正确运行此.java文件的人都可以推荐一些东西。

我也可以上传java代码,但我认为它已经过时,因为它可以在上面提到的网站上找到并且很容易找到...

在项目中,我还包括JyDT_Update_Site_1.4.15 zip,以防万一这会有所帮助,但遗憾的是没有发生任何事情。

也许我必须在特定文件中添加一些代码,例如在其他帖子的情况下,但我不知道在我的系统中添加什么代码。

谢谢你的时间。

4 个答案:

答案 0 :(得分:1)

在我看来与您链接的帖子中的问题相同。

  

'执行命令失败([\'sh \',   \' - c \',\'env \']):   java.io.IOException:无法运行   程序“sh”:

意味着jython被配置为认为它在某种类型的UNIX系统上运行。

答案 1 :(得分:1)

解决方案是在Jython 注册表文件中设置属性python.os

您可以按照以下说明找到注册表文件:http://www.jython.org/archive/21/docs/registry.html#finding

答案 2 :(得分:0)

看起来python代码正在尝试运行shell命令。 但是,因为你在Windows上,这不起作用。

这让我想知道这是否真的是在python中获取环境的规范方法?

答案 3 :(得分:0)

您需要在系统上安装Sun Java编译器1.4.2版。 没有它,您将无法运行MontyLingua Java示例,并且 我们不确定您是否可以将MontyLingua编译为.NET DLL。 搜索www.sun.com以获取Java SE开发工具包的1.4.2版并进行安装 它。