【问题标题】:PyDev: ImportError when trying to call user-defined Java Method using Jython in EclipsePyDev:尝试在 Eclipse 中使用 Jython 调用用户定义的 Java 方法时出现 ImportError
【发布时间】:2014-11-04 06:01:11
【问题描述】:

我的问题类似于ImportErrorCmd,但我使用的是 Windows 并试图在 PyDev Eclipse 中运行这个该死的东西。我知道如何让它在 cmd 上工作,但不能在 Eclipse 上工作。

问题

无论如何,所以在这里我试图让这个例子@ImportErrorSimpleExample工作(那里的解决方案对我不起作用)。在 Eclipse 中,我使用以下代码创建了一个 Java 项目:(link -> C:\Users\compski\workspace\test\src\test\Greeter.java)

package test;

public class Greeter {

private String msg;

  public Greeter() {
     msg = "Hello, ";
  }

  public void greet(String name) {
     System.out.println(msg + name);
  }

}

在 Eclipse 中,我也使用名为 me.py 的 Jython 代码创建了一个 PyDev 项目:(链接 -> C:\Users\compski\workspace\Jython\Test\me.py

from test import Greeter

g = Greeter()
g.greet("yours truly")

尝试修复“ImportError”但失败:

1) 我尝试将我的 java 代码添加到 PYTHONPATH(C:\Users\compski\workspace\test\src\test\Greeter.java 和 C:\Users\compski\workspace\test\src\test)中在这里 -> Proposed Solution 1 。还是不行

2) 我将我的 Java 项目设置为 PyDev 项目(右键单击 Java 项目 -> PyDev -> 设置为 Pydev 项目,但我没有任何“bin 文件夹”。然后我的项目还引用了包含 Greeter 的 Java 项目。 java 到我的 PyDev 项目,在这里 -> Proposed solution 2. 仍然没有工作

3) 来自 SO 聊天室的 1 个人告诉我,我需要“您需要添加目录和 jar,java 将从中查找您给它的类 c:\foo\bar\bazand import zyxxy.Frobnicator然后它寻找 c:\foo\bar\baz\xyzzy\Frobnicator" 但我不认为我完全理解他的意思,因为这听起来像我在 1) 所做的那样

4) ......你的答案?

【问题讨论】:

  • 你说它可以在 CLI 上运行;你在那里做了什么?
  • 在 CMD 提示符下? ..我基本上在cmd提示符下编译了java文件(使用javac Greeter.java)。然后导航到与 Greeter.class 相同的目录,我运行了 Jython(在 cmd 上).. 导入和调用 Java 方法非常顺利
  • 你使用了什么命令? Jython 是如何安装的?它是独立的 Jython jar 吗?或者您是否在系统中安装了 Jython?
  • @IntrepidBrit 在 CMD 上,我输入了“javac Greeter.java”。在同一个目录中,我输入了“jython”。然后我输入“import Greeter g = Greeter() g.greet("yours really")”,它使用 Jython 2.5.3 工作 - 安装在我的系统中的安装程序版本 @ (jython.org/downloads.html)

标签: eclipse import pydev jython importerror


【解决方案1】:

好的,现在我们在这里有了真实的文件名:给定C:\Users\compski\workspace\test\src\testPYTHONPATH,在您执行from test import Greeter 之后,它将尝试在PYTHONPATH 的每个条目中找到Greeter.class;那就是它试图找到C:\Users\compski\workspace\test\src\test\test\Greeter.classC:\Users\compski\workspace\test\src\test\Greeter.java\test\Greeter.class,它们都不存在。

相反,如果我没记错的话,在 Eclipse 中您可以将 项目 添加到 PYTHONPATH,这可能是在 IDE 中测试的首选 - 因此只需将您的 test 项目添加到蟒蛇路径。另一种选择是添加找到test\Greeter.class 的目录;在 Eclipse 中,这应该是 C:\Users\compski\workspace\test\bin - 默认情况下,Java 性质的项目会将文件从 src 编译到项目中的(隐藏的)bin 文件夹。

最后,如果错误是关于在 test 中找不到 GreeterClass,请注意 test 是一个内置的 Python 模块名称(尽管 IIRC Jython 没有该名称的模块)。

【讨论】:

  • +1 解决它的关键是 'C:\Users\compski\workspace\test\target\bin'(愚蠢的目标文件夹隐藏了 bin)谢谢!
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2011-04-22
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
相关资源
最近更新 更多