我按照Jython and Java Integration中的说明操作。在
想法很简单:制作Java接口,并匹配python类。 问题是使用接口函数setX()和setY(),我在执行文件时总是会遇到错误。我不得不将名称修改为setXvalue()或setYvalue()以避免错误。在
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class
org.python.core.PyTraceback
at org.python.core.PyException.tracebackHere(PyException.java:158)
at org.python.core.PyObject._jcall(PyObject.java:3587)
at org.python.proxies.Arith$Arith$0.setX(Unknown Source) <-- ERROR???
at Main.main(Main.java:14)
package org.jython.book.interfaces;
这是一个Java接口。在
^{pr2}$这是部分python类。在
class Arith(ArithType):
''' Class to hold building objects '''
def setX(self, x): # << Error
self.x = x
您可以在此站点找到要测试的源代码- https://dl.dropboxusercontent.com/u/10773282/2013/Archive.zip
这怎么了?为什么方法名setX()或setY()会导致执行错误?在
在Jython中访问对象的属性时要小心;Jython使用隐式getter/setter,因此从
self.x
读取会调用self.getX()
等等。将jython代码中所有出现的self.x
更改为self._x
(对y
也是如此)使它工作(对我来说)。实际上,在Python中,将非公共成员命名为_...
。在相关问题 更多 >
编程相关推荐