在Ubuntu 12.04上的Eclipse 3.7.2上配置jython 2.5.1时出错

时间:2012-05-20 07:00:42

标签: eclipse configuration jython pydev interpreter

我正在尝试通过Ubuntu软件中心在Ubuntu 12.04上安装的Eclipse 3.7.2上设置Jython解释器。 Eclipse是eclipse-platform 3.7.2-1版本。 PyDev已经按照用户手册(或者至少是我相信的那样)进行了安装,并且我尝试使用更新和PyDev的每晚构建来设置解释器。现在,PyDev版本是: PyDev for Eclipse 2.6.0.2012050900 org.python.pydev.feature.feature.group Aptana

还安装了Jyton: panton @ maleficio:〜$ dpkg -l | grep -i jython ii jython 2.5.1-2ubuntu2 Python与Java无缝集成

我可以在“正确的”目录中找到它:

panton @ maleficio:〜$ ls -1 / usr / share / java / jython * /usr/share/java/jython-2.5.1.jar
/usr/share/java/jython.jar panton @ maleficio:〜$

(第二个文件只是第一个文件的链接)。

这就是说,当我尝试创建一个新项目时,File - >新 - >项目 - > PyDev - > PyDev Project,然后接下来,我提供了三种项目类型:Python,看起来没问题,并显示了一个用于选择解释器的组合框,以及Jython和Iron Python,它们(两者)都提醒我“请配置一个解释器程序前的相关偏好。“。

对于接下来的段落,我将坚持使用Jython选项,因为Iron Python已经没有为Precise Pagolin(Ubuntu 12.04)提供“官方”发行版。

好的,我转到Window-> Preferences,然后选择Interpreter-Jython,然后选择New,我选择一个正确的名称,Jython 2.5.1,然后选择正确的路径,/ usr / share / java / jython -2.5.1.jar,

按确定,收到此消息:

获取解释器信息时出错。常见原因包括: - 使用不受支持的版本(Jython应至少为2.1,因此它是:它是2.5.1版本) - 指定无效的解释器。完全没有,因为我选择了真实的文件,而不是链接。 .......................................

错误日志显示:

    See error log for details.
    No output was in the standard output when trying to create the interpreter info.
    The error output contains:>>error importing site
        at org.python.core.PySystemState.getPath(PySystemState.java:513)
        at org.python.core.PySystemState.getPathLazy(PySystemState.java:502)
        at org.python.core.util.RelativeFile.<init>(RelativeFile.java:21)
        at org.python.core.packagecache.PathPackageManager.packageExists(PathPackageManager.java:43)
        at org.python.core.packagecache.SysPackageManager.packageExists(SysPackageManager.java:159)
        at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:132)
        at org.python.core.PyObject.__findattr__(PyObject.java:869)
        at org.python.core.packagecache.PackageManager.lookupName(PackageManager.java:136)
        at org.python.core.JavaImporter.find_module(JavaImporter.java:39)
        at org.python.core.JavaImporter.find_module(JavaImporter.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)

    java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/jruby/ext/posix/util/Platform
    <<

------------------------------------------------------
The Workspace log on Eclipse says:
-------------------------------------------------------
eclipse.buildId=I20110613-1736
java.version=1.6.0_24
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64

Error
Sun May 20 08:39:09 CEST 2012
No output was in the standard output when trying to create the interpreter info.
The error output contains:>>error importing site
    at org.python.core.PySystemState.getPath(PySystemState.java:513)
    at org.python.core.PySystemState.getPathLazy(PySystemState.java:502)
    at org.python.core.util.RelativeFile.<init>(RelativeFile.java:21)
    at org.python.core.packagecache.PathPackageManager.packageExists(PathPackageManager.java:43)
    at org.python.core.packagecache.SysPackageManager.packageExists(SysPackageManager.java:159)
    at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:132)
    at org.python.core.PyObject.__findattr__(PyObject.java:869)
    at org.python.core.packagecache.PackageManager.lookupName(PackageManager.java:136)
    at org.python.core.JavaImporter.find_module(JavaImporter.java:39)
    at org.python.core.JavaImporter.find_module(JavaImporter.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/jruby/ext/posix/util/Platform
<<

java.lang.RuntimeException: No output was in the standard output when trying to create the interpreter info.
The error output contains:>>error importing site
    at org.python.core.PySystemState.getPath(PySystemState.java:513)
    at org.python.core.PySystemState.getPathLazy(PySystemState.java:502)
    at org.python.core.util.RelativeFile.<init>(RelativeFile.java:21)
    at org.python.core.packagecache.PathPackageManager.packageExists(PathPackageManager.java:43)
    at org.python.core.packagecache.SysPackageManager.packageExists(SysPackageManager.java:159)
    at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:132)
    at org.python.core.PyObject.__findattr__(PyObject.java:869)
    at org.python.core.packagecache.PackageManager.lookupName(PackageManager.java:136)
    at org.python.core.JavaImporter.find_module(JavaImporter.java:39)
    at org.python.core.JavaImporter.find_module(JavaImporter.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/jruby/ext/posix/util/Platform
<<
    at org.python.pydev.ui.interpreters.AbstractInterpreterManager.createInfoFromOutput(AbstractInterpreterManager.java:415)
    at org.python.pydev.ui.interpreters.JythonInterpreterManager.doCreateInterpreterInfo(JythonInterpreterManager.java:77)
    at org.python.pydev.ui.interpreters.JythonInterpreterManager.internalCreateInterpreterInfo(JythonInterpreterManager.java:46)
    at org.python.pydev.ui.interpreters.AbstractInterpreterManager.createInterpreterInfo(AbstractInterpreterManager.java:369)
    at org.python.pydev.ui.pythonpathconf.ObtainInterpreterInfoOperation.run(ObtainInterpreterInfoOperation.java:81)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

已经安装了Jruby,它的版本是:

panton @ maleficio:〜$ dpkg -l | grep -i jruby

ii jruby 1.5.6-2 100%纯Java实现Ruby

并且存在jar文件/usr/lib/jruby/lib/jruby.jar,其中包含两个错误转储中引用的类。

根据要求,我执行此命令:
〜$ java -Dpython.home = / usr / share / java -classpath /usr/share/java/jython-2.5.1.jar:$CLASSPATH org.python.util.jython plugins / org.python.pydev / pysrc / interpreterInfo.py 错误导入网站     在org.python.core.PySystemState.getPath(PySystemState.java:513)     在org.python.core.PySystemState.getPathLazy(PySystemState.java:502)     在org.python.core.util.RelativeFile。(RelativeFile.java:21)     在org.python.core.packagecache.PathPackageManager.packageExists(PathPackageManager.java:43)     在org.python.core.packagecache.SysPackageManager.packageExists(SysPackageManager.java:153)     在org.python.core.PyJavaPackage。 findattr_ex (PyJavaPackage.java:132)     在org.python.core.PyObject。 findattr (PyObject.java:869)     at org.python.core.packagecache.PackageManager.lookupName(PackageManager.java:136)     在org.python.core.JavaImporter.find_module(JavaImporter.java:39)     在org.python.core.JavaImporter.find_module(JavaImporter.java:25)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:616)

java.lang.NoClassDefFoundError:java.lang.NoClassDefFoundError:org / jruby / ext / posix / util / Platform

欢迎任何有关此方面的帮助。

2 个答案:

答案 0 :(得分:2)

好吧,似乎Jython出于某种原因与JRuby冲突(这对我来说似乎很奇怪)。

你能尝试跑步吗?

java -Dpython.home=/usr/share/java -classpath /usr/share/java/jython-2.5.1.jar:%CLASSPATH% org.python.util.jython plugins/org.python.pydev/pysrc/interpreterInfo.py

并粘贴从命令行运行的输出?


编辑:

嗯,好像这不是PyDev问题(我认为如果你用'import sys; import os.path'改变一个文件的命令行中的interpreterInfo.py,你就会有同样的错误 - 请检查一下。)

我的猜测是Jython和JRuby是冲突的...你可以尝试设置你的CLASSPATH来执行Jython时删除JRuby(如果你能够使用该命令行在shell中工作,你应该能够从该shell启动Eclipse并正确配置Jython解释器。)


编辑2:

好的,我快速浏览了一下Jython,看来这是一个Jython bug。你在那里的版本...请参阅:https://bitbucket.org/jython/jython/src/fd2130e12b7c/src/org/python/core/PySystemState.java(它有一个 import org.jruby.ext.posix.util.Platform ,绝对不应该存在)。在最新版本的存储库中,它已经针对 import jnr.posix.util.Platform 进行了更改,因此,显然,这主要是获取正确的Jython版本(可能是一个在linux repo中是不行的 - 或者至少,你需要让Jython的PYTHONPATH上的JRuby工作,这真的很尴尬(但是应该已经在Jython方面修复了)。 / p>

答案 1 :(得分:2)

我遇到了同样的问题,我通过卸载Ubuntu 12.04存储库中提供的Jython版本并使用项目网站中给出的版本重新安装Jython来解决它。 Fabio Zadrozny对这个漏洞是正确的。谢谢。