簡體   English   中英

PythonInterpreter導入Java類

[英]PythonInterpreter importing java classes

我具有以下文件結構:

src
|___mod
|   |__ __init__.py
|   |__ pycode.py
|   |__ javacode.java
|
|___main
    |__ start.java

pycode.py的內容:

from mod import javacode as jv
...

里面start.java ,我嘗試運行pycode.py與Python解釋器。

PythonInterpreter py = new PythonInterpreter();
py.exec("from mod.pycode import *");

但是,出現以下錯誤:

ImportError: cannot import name javacode

這令人困惑,因為它似乎能夠找到該程序包,但是由於某種原因未能找到該文件。 我實際上已驗證它找到了該程序包,因為如果您提供了錯誤的程序包名稱,它會抱怨。

為了提供更多信息,我正在Eclipse的Windows上運行該程序。 我正在使用pydev插件進行日食。 我已將項目的bin文件夾添加為pydev的源文件夾(如一個源所建議),並且在程序開始時具有以下內容:

static {
    PythonInterpreter.initialize(System.getProperties(), PySystemState.getBaseProperties(),
            null);
}

誰能給我一個解決方法的想法?

它不起作用的原因是因為我將javacode.java放在了python包中。

根據Jython Essentials的書,執行此操作會將java文件標記為python模塊:

Jython還允許通過import語句訪問Java類和包。 Jython能夠通過底層Java虛擬機(JVM)從Java類路徑和sys.path目錄中加載類。 從概念上講,您可以認為出於裝載Java類的目的,sys.path中的目錄已附加到類路徑中。 這意味着無需使用__init__.py模塊在sys.path上標記Java軟件包,因為這會使它們成為Python軟件包。

因此,在此之后,我將文件組織如下:

src
|___pymodules
|   |__ __init__.py
|   |__ pycode.py
|
|___mod
|   |__ javacode.java
|
|___main
    |__ start.java

start.java內部:

PythonInterpreter py = new PythonInterpreter();
py.exec("from pymodules.pycode import *");

現在,該程序即使在eclipse中執行,甚至在將其放入獨立的jar中之后,都可以完美執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM