gpt4 book ai didi

java - 从 java 调用 jython 脚本

转载 作者:行者123 更新时间:2023-11-30 02:35:41 25 4
gpt4 key购买 nike

我目前正在使用 jython 和 java 开发一个简单的 hello world 程序。

该程序的设计方式是 jython 方法接受名称参数并返回欢迎消息。

我的问题是每当我从java访问jython方法时,它都会显示nullponter异常

我的 jython 脚本 (JythonHello.py):

class JythonHello:
def __init__(self, name):
self.name = name
def sayHello(self):
return "Hello "+ self.name

和我的java代码:

public static void main(String[] args) {

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("src/jython/JythonHello.py");

PyObject callFunction = interpreter.get("sayHello");
PyObject result = callFunction.__call__(new PyString("Boban"));
String msg = (String) result.__tojava__(String.class);
System.out.println("output: " + msg);
}

有什么建议吗?

最佳答案

查看你的代码;你的Python代码定义了一个类和一个成员方法:

class JythonHello:
def __init__(self, name): ...
def sayHello(self): ...

看来您打算调用那个方法:

 PyObject callFunction = interpreter.get("sayHello");
PyObject result = callFunction.__call__(new PyString("Boban"));

但请注意:sayHello() 不接受任何参数。 self 参数表明您必须在对象上调用它;但没有任何其他参数!

所以,在纯Python中你会说:

helloVar = JythonHello("Boban")
helloVar.sayHello()

但是你的java代码尝试这样调用它

sayHello("Boban")

所以,真正的答案是:退一步;并重新思考您真正打算做什么;然后编写以这种方式工作的代码。

我首先不在 python 端添加“class”部分;相反,尝试简单地调用一个采用字符串参数的函数!

最后:您是否完全走错了路? jython 的主要点是编写简单的 Python 代码以在运行的 JVM 中执行“调试”工作。另一方面,您正在编写复杂的 Java 代码来使用一些 Python 代码......

关于java - 从 java 调用 jython 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43179109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com