2015-04-05 46 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