在Jython中访问Java类的成员时的AttributeError

时间:2013-04-09 18:32:51

标签: java jython attributeerror

我正在尝试将自己的java类导入到某些jython代码中。我将.java编译为.class文件并将.class文件放入.jar中。然后我使用-Dpython.path =“path / to / jar / my.jar”包含此.jar文件。到目前为止一切顺利,在启动我的程序时没有任何抱怨。

然而,当我到达使用我的java类的代码部分时,似乎找不到我的java类中的任何函数。我得到以下AttributeError

AttributeError: 'pos.Test' object has no attribute 'getName'

任何建议都将不胜感激! (下面的代码示例。)

Java代码:

package pos;

class Test{

    private String name;

    public Test(){
        name = "TEST";
        System.out.println( "Name = " + name );
    }

    public String getName(){
        return name;
    }   
}

Jython代码段:

import pos.Test

...

test = pos.Test()

print 'Name = ', test.getName()

2 个答案:

答案 0 :(得分:2)

关于能见度。你的班级是package-private。如果

,它将起作用
python.security.respectJavaAccessibility = false

被添加到Jython注册表中。请参阅http://www.jython.org/jythonbook/en/1.0/appendixA.html?highlight=accessibility#registry-properties

或者让课程公开。

答案 1 :(得分:0)

您必须先导入Jython代码中的Java类,然后才能使用它。类似的东西:

from pos import Test

test = Test()
print 'Name = ', test.getName()

请参阅Chapter 8 of the Jython Book以了解导入路径等在Jython中的工作原理。