当前位置: 首页 > 知识库问答 >
问题:

如何从Jython调用由Java类执行的Java方法?

钱峻
2023-03-14

我是(Java/C++/C#)的新手,我也懂Python。我试图用Java创建一个GameEngine,它可以调用Jython脚本,可以访问Java引擎中的方法。

我不知道如何处理这件事。我已经做了几周的研究,没有什么能回答我的问题;即:

如何从由父类执行的JythonScript调用父类中的方法?

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

好吧,这里的答案帮助我理解了一些事情,但并没有解决我的问题。我想知道的是这样的东西是否有效:

class MyJavaClass
{
    Public MyJavaClass()
    {
        PythonInterpreter interp = new PythonInterpreter;
        interp.execfile("MyJythonScript.py");
        interp.exec("InGameCommand");
    }

    public void SpawnPlayer()
    {}

    public void KillPlayer()
    {}

}

myjythonscript.py

Def InGameCommand():
    SpawnPlayer()
    KillPlayer()

这可能吗?有办法做到这一点吗?

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

到Jython的位置:“C:\jython2.7A2\jython.jar”到我的工作的位置:“C:\文档和设置\pc\desktop\jython*.java”到我的本地jtyhonjar的位置:“C:\文档和设置\pc\desktop\jython\jython.jar”

共有1个答案

酆晔
2023-03-14

需要jython.jar

>

  • 在Java中执行python代码

    import org.python.util.PythonInterpreter;  
    public class PythonScript{  
        public static void main(String args[]){  
            PythonInterpreter interpreter = new PythonInterpreter();  
            interpreter.exec("days=('One','Two','Three','Four'); ");  
            interpreter.exec("print days[1];");    
        }
    }  
    

    在Java中调用python脚本方法。

    def add(a, b):  
        return a + b  
    
    import org.python.core.PyFunction;  
    import org.python.core.PyInteger;  
    import org.python.core.PyObject;  
    import org.python.util.PythonInterpreter;  
    
    public class PythonScript {  
        public static void main(String args[]) {  
    
            PythonInterpreter interpreter = new PythonInterpreter();  
            interpreter.execfile("/home/XXX/XXX/test.py");  
            PyFunction pyFuntion = (PyFunction)interpreter.get("add",PyFunction.class);  
    
            int a = 10, b = 20 ;  
            PyObject pyobj = pyFuntion.__call__(new PyInteger(a), new PyInteger(b));  
            System.out.println("result = " + pyobj.toString());  
       }
    }  
    
    number=[1,10,4,30,7,8,40]  
    print number  
    number.sort()  
    print number  
    
    import org.python.util.PythonInterpreter;
    
    public class FirstJavaScript {
    
        public static void main(String args[]) {
             PythonInterpreter interpreter = new PythonInterpreter();
             interpreter.execfile("/home/XXX/XXX/test.py");
        }
    }
    

  •  类似资料:
    • 我的Jython脚本调用了一些我用Java编写的代码(因为我更喜欢Java多线程)。现在,我需要从Java调用一个Jython方法(否则我必须用Java重写它)。 从Jython中驱动Java很容易,设置Java是主程序,Jython是从程序也很简单,但如何设置它以使它们能够相互调用并不明显。 官方文档包含了一篇关于这一切的非常长的文章:第10章:Jython和Java集成,这使得这项任务乍一看似

    • 问题内容: 我在Java项目中使用Jython。 我有一个Java类:和一个Python类: Python文件如下: 现在的问题是我想从Java文件的方法调用Python文件的方法并打印结果。 问题答案: 如果我没看错文档,则可以使用以下功能: 或者,如果您想获取字符串: 如果要向其提供Java变量的某些输入,则可以预先使用,而不要在Python代码中使用该变量名:

    • 问题内容: 我有一个具有称为的私有方法的类。我想从外面打电话。我认为应该可以反思,但是我得到了。有任何想法吗??? 问题答案: 利用使用其之前的Method对象的方法。

    • **抱歉,我对python和java都很陌生,所以我可能不认识到这已经得到了回答,只需要根据我的情况进行调整。 本质上,我有一个在python环境中运行的脚本管理器,我需要将数据传递给bonej插件进行分析,然后该插件将返回一个数组,另一个python脚本将使用该数组进行进一步分析。 我已经被引导到jython来实现这一点,但我不知道如何像导入模块一样导入imageJ。 我知道我可以简单地从命令行

    • 问题内容: 我正在学习Java入门课程,我们才刚刚开始学习继承。我正在完成一项任务,要求我们创建一个具有名称和年龄的“宠物”超类。和三个子类,每个子类都有自己的独特特征(我选择了“狗”,“猫”和“鸟”)。构建完所有这些之后,我们将创建一个Main类来测试所有内容,这就是我遇到问题的地方。我试图在中调用这些独特特征的方法,但似乎只能找到超类中的方法。 这是主类: 这是我的超人 这是子类之一(它们看起

    • 问题是: 我的问题是:我做错了什么?我如何修复事情以成功导入BuildingType接口?也许问题出在类路径上,但是我不知道哪个值是合适的。 代码组织: buildingType.java