Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jython中Java项目的访问方法_Java_Scripting_Jython - Fatal编程技术网

Jython中Java项目的访问方法

Jython中Java项目的访问方法,java,scripting,jython,Java,Scripting,Jython,我目前正在用Java编写一个游戏,这个游戏随着时间的推移越来越大。 因此,现在我正处于这样一个时刻,代码的更动态实现将变得非常方便。 我决定研究一下Jython,并让它与一些简单的脚本一起工作。 (顺便说一句,如果有什么关系的话,我正在使用最新的独立Jython) 现在我的问题是:我可以在前面提到的Java项目中执行的Jython脚本中执行Java项目中的方法吗 下面是一个伪代码示例,用于更好地理解我想问的问题: 假设我有一个脚本,如下所示: def main(): killPlayer

我目前正在用Java编写一个游戏,这个游戏随着时间的推移越来越大。 因此,现在我正处于这样一个时刻,代码的更动态实现将变得非常方便。 我决定研究一下Jython,并让它与一些简单的脚本一起工作。 (顺便说一句,如果有什么关系的话,我正在使用最新的独立Jython)

现在我的问题是:我可以在前面提到的Java项目中执行的Jython脚本中执行Java项目中的方法吗

下面是一个伪代码示例,用于更好地理解我想问的问题:

假设我有一个脚本,如下所示:

def main():
    killPlayer()

main()
PythonInterpreter pyInterp = new PythonInterpreter();
pyInterp("script.py");
以及包含方法“killPlayer()”的Java类:

Jython脚本的执行过程如下:

def main():
    killPlayer()

main()
PythonInterpreter pyInterp = new PythonInterpreter();
pyInterp("script.py");
有这种可能吗


提前感谢并为我糟糕的英语感到抱歉^ ^

您可以像这样在Jython中导入Java类:

from javax.swing import JFrame
f = JFrame('Hello, World!', defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(300, 300), locationRelativeTo=None)
f.setVisible(True)
()

因此,我的建议是使用Java代码作为库,并在Python中实现“设置一切”。这样,您就不需要找出从脚本中查找Java对象实例的方法


如果您需要查找实例,我建议在某个地方创建一个静态全局变量,该变量允许您访问一个公开重要游戏实例的类。在Java代码中,您可以使用Jython脚本的
Map
中的名称注册实例。

谢谢!我没想到我能如此轻松地导入自己的包和类。