2015-04-05 50 views
0

我正在開發一個項目,該項目將向Minecraft推出可編程計算機,類似於ComputerCraft,除了使用Python而不是lua。如何使用Jython編寫Java程序

我知道Jython,因此認爲它適合於檢查我是否可以將其用於我的項目,但無法找到足夠的信息(在他們的網站和幾個搜索)來確定。

我知道討論使用Java from within Jython的主題,但這不是我希望我的項目工作的方式。那些使用過電腦工作室的人知道,你只有Computercraft爲你提供的圖書館,而上面鏈接的主題完全可以訪問......以及一切。在我的用例中,一切都是不可能的。我也不想要from pycomputers.api import Colors,我想'顏色'api可以像colors.red一樣使用。

希望以上是可能的,在Jython中,如果不是,我很想知道另一個Python解釋器(可以使用Java),使我的項目。

+2

選擇的JavaScript,而不是Python作爲官方的腳本語言,正是因爲Python是默認提供太多和條帶化模塊庫沒有意義太大GNOME項目執行代碼。只是一個想法。 – Cilyan 2015-04-05 21:16:10

+1

@Cilyan我最初選擇Python,因爲我的(輕度)知識和開發人員的吸引力。 Groovy可能會成爲我的第二站。 – jamierocks 2015-04-05 21:35:58

回答

2

根據docs如果要將Jython嵌入到Java應用程序中,則必須使用PythonInterpreter類調​​用它。這是相當海峽的前進,只是請注意,提供filename參數的超載是爲名稱的主要可執行文件(此信息通常通過sys模塊在常規的舊CPython中可用)。

現在,爲了在java中暴露綁定到Python(說來控制的Minecraft的世界),我們需要中被描述爲here的jar文件添加到sys.path,如果你想從Java中則控制sys.path值使用

PythonInterpreter pi = new PythonInterpreter(); 
pi.getSystemState().path.append(new PyString("path/to/java/modules.jar")); 

注意,jar文件裏面的包不能在反向鏈接的風格來組織。相反,請按照instructions on package naming。特別注意Naming Python Modules and Packages,如果你按照Proper Python Naming的指導方針,那麼你會得到你想要的結果。

最後,我們用

String source = ...; 
pi.execute(pi.compile(source)); 
+0

謝謝,回覆。只要我驗證/測試,我會接受答案並讓你獲得50分。 :) – jamierocks 2015-04-08 23:30:51