[英]How do I share common Python/Jython code between a Python and Java project with Pydev/Eclipse?
我正在使用嵌入在Java項目中的Jython腳本,該Java項目是在Eclipse中開發的,安裝了Pydev。 現在,我想在另一個純Python項目中重用此腳本。 有沒有一種方法可以干凈地做到這一點而無需復制腳本?
當前,我有一個Java項目,其中包含目錄src/
(包含Java源代碼)和src-py/
(包含Jython源代碼),並添加了Pydev'facet'。 Java代碼使用以下代碼調用Jython代碼:
// evaluate the Jython class
PythonInterpreter interpreter = new PythonInterpreter();
InputStream resourceAsStream = MyEclipsePlugin.getResource("/src-py/MyJythonCode.py");
interpreter.execfile(resourceAsStream);
// create an instance of the Jython class and retrieve a Java interface reference to it
interpreter.exec("x = MyJythonClass()"); // MyJythonClass implements MyJavaInterface
Object x = interpreter.get("x").__tojava__(MyJavaInterface.class);
return (MyJavaInterface) x;
這有效,但是顯然很丑陋。 從我閱讀的內容來看,曾經有一個“ jythonc”(可能更接近於我所需要的),但是它似乎已被棄用,並且不鼓勵您使用它。 否則,我需要在運行時使用實際的Jython源代碼將其編譯為JVM類。 因此,不幸的是,上述模式似乎不支持加載模塊,因此我目前正在單個.py文件中處理所有內容。 我想我最終可能會多次執行interpreter.execfile()
,但是當模塊之間存在相互依賴關系時,我還沒有真正弄清楚該怎么做。
接下來,我嘗試創建一個新的Jython項目以將MyJythonCode.py
移入其中。 不幸的是,我無法將Pydev / Jython項目添加為對Java項目的項目引用,因此我不確定如何將其集成到Java項目中。
我目前看到的選項,我都不喜歡:
有人有更好的主意嗎?
我認為應該為這兩個都依賴的內容創建一個單獨的項目...
即:
將項目創建為Java項目,然后向其添加pydev屬性(即:右鍵單擊項目> pydev>設置為pydev項目)。
然后,在該項目中,您可以創建java-wrapper類,還可以配置pydev的源路徑(並將該項目添加為其他項目的引用:右鍵單擊其他項目>屬性>項目引用)。
這樣一來,對於Java / Python來說一切都應該正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.