【问题标题】:.class file from jython with pydev使用 pydev 来自 jython 的 .class 文件
【发布时间】:2010-11-07 17:38:43
【问题描述】:

我第一次尝试 jython 是一个 java/jython 项目,我用 pydev 在 eclipse 中编写。

我创建了一个 java 项目,然后通过 RightClick 项目 >> pydev >> 将其设为 pydev 项目... 你明白了。然后我添加了两个源文件夹,一个用于java,一个用于jython,每个源文件夹都有一个包。我将每个文件夹设置为项目的构建路径。我想我会让你知道这一切,所以希望你能告诉我我是否正确设置了项目。

但真正的问题是:如何将我的 jython 代码制作成一个类文件,以便 java 代码可以使用它? 首选方法是 eclipse/pydev 会为我执行此操作自动,但我无法弄清楚。 jython 用户指南中提到的内容暗示这是可能的,但我在任何地方都找不到相关信息。

编辑:我确实找到了一些信息herehere,但事情进展并不顺利。

我一直在密切关注第二个链接中的指南,但我不知道如何让 jythonc 为我的 python 类创建构造函数。

【问题讨论】:

标签: java python eclipse jython pydev


【解决方案1】:

按照“在不使用 jythonc 的情况下从 Java 访问 Jython”教程之后,可以在 java 代码中使用 jython 模块。唯一棘手的一点是 *.py 模块不会被编译为 *.class 文件。所以它原来是java中的异国脚本。与 jythonc 的 py 模块相比,性能当然可能会降低,但正如我从 jython 社区页面中获得的那样,它们不会支持 jythonc(实际上已经在 jython2.5.1 中删除了它)。

因此,如果您决定采用非 jythonc 方法,那么上述教程是完美的。我不得不稍微修改一下 JythonFactory.java 代码:

String objectDef = "=" + javaClassName + "(your_constructor_params here)";
try {
       Class JavaInterface = Class.forName(interfaceName);

       System.out.println("JavaInterface=" + JavaInterface);

       javaInt = 
            interpreter.get("instance name of a jython class from jython main function").__tojava__(JavaInterface);
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();  // Add logging here
    }

【讨论】:

    【解决方案2】:

    Jythonc 不再存在,它已被分叉到另一个名为 Clamp 的项目中,但话虽如此......

    ...你可以预编译 你的 python 脚本到 .class 文件 使用:

    jython [jython 主页]/Lib/compileall.py [你保存你的目录 python代码]

    来源 - Jython Newsletter, March 2009

    当我用 Python 2.7 代码向它提供一个文件夹时(知道它在 Jython 2.5 中会失败),它确实输出了一个 .class 文件,尽管它没有功能。尝试使用您的 Jython 脚本。如果可行,请告诉我们,因为我很快就会到达您所在的位置。

    一旦你做到了这一点,将你的命令行语句转换为 PyDev 中可以根据需要调用的外部工具并不难。

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 2013-05-25
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2012-05-18
      相关资源
      最近更新 更多