2012-12-24 107 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

相關問題