我正在尝试通过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)
panton @ maleficio:〜$ dpkg -l | grep -i jruby
并且存在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
欢迎任何有关此方面的帮助。
答案 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对这个漏洞是正确的。谢谢。