2012-12-24 110 views
1

我使用Netbeans平台构建了我的应用程序uasing java languge.I需要使用jython将一些python函数调用到java类中是唯一方法。 不幸的是,当我试图运行程序的错误显示表明,该应用程序并没有发现以下几个模块如何使用jython jar将python模块添加到java中

Exception in thread "main" Traceback (most recent call last): 

File "script.py", line 13, in <module> 
    import re 
ImportError: No module named re 
    File "script.py", line 14, in <module> 
    from string import * 
ImportError: No module named string 
Java Result: 1 

这是script.py,我想调用它的一个方法到我的代码java类

#!/pkg/ldc/bin/python2.1 

import xml.parsers.expat 
import re 
from string import * 
import sys 

如何将这些python模块添加到我的应用程序中?

+0

当你单独执行你的脚本时,会发生什么(即,终端上只有'jython script.py')? – Vicent

+0

你的PYTHONPATH是否正确?它应该包含python库的位置。 – tcb

回答

2

下面的代码运行在我使用Jython 2.7和Java 1.6的Ubuntu盒就好了(Eclipse和从终端测试):

package myjythonproject; 
import org.python.util.PythonInterpreter; 

public class MyJythonProject { 

    public static void main(String[] args) { 
     try 
     { 
      PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]); 
      PythonInterpreter interp = new PythonInterpreter(); 
      interp.execfile("/home/vicent/foo.py"); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

只要确保在编译和执行与jython.jar您类路径。

UPDATE

我只是在我的Ubuntu箱安装了NetBeans 7.2.1(版本的Java SE),创建一个新的Java项目,MyJythonProject,并加入以上的MyJythonProject.java所示的代码文件。然后在项目的Properties对话框中,我在左侧窗格中选择了Libraries。在右侧窗格中,我选择了Compile选项卡,单击了Add JARF/folder按钮并选择了我的jython jar(/opt/jython2.7a2/jython.jar)。我已经关闭了对话框,并在主窗口的Run菜单中选择了Clean and Build Project (MyJythonProject)。之后,我运行了这个项目,它的功能就像一个魅力。不需要Python/Jython插件,只需告诉你的项目jython.jar的安装位置即可。

更新2

还要注意,所以你必须使用一个Python2.x解释Python3不Jython的支持。

+0

仍然出现错误:(。我将jython.jar添加到我的Netbeans库中有什么想法? – Abreal

+0

您的IDE配置合适吗?我不使用NetBeans,但可能[此链接](http://wiki.netbeans.org/DevelopingJythonAppsUsingNetbeans )可以帮助。 – Vicent

+0

事情是我正在使用Netbeans 7.2.1并添加python插件我必须降级到6.5,这在我的代码里面提示了很多问题,并且我尝试了很多方法将python插件添加到Netbeans中但是它们都以失败告终,我认为有一种简单的方法来配置python库的路径,就像现在我下载了python,并通过使用属性props = new Properties(); props.setProperty(“python python33“); PythonInterpreter.initialize(System.getProperties(),props,new String [] {”“});不幸的是仍然得到相同的错误是否因为我的路径语法? – Abreal

相关问题