使用Jython从Python访问Java类

3
我用Java编写了一个类,我想使用Jython在Python中执行它。 首先,我遇到了什么错误?
Traceback (most recent call last):
  File "/Users/wolverine/Desktop/project/jython_scripts/customer.py", line 3, in <module>
    customer = Customer(1234,"wolf")
TypeError: No visible constructors for class (Customer)

我的Java类格式:

public class Customer {
    public final int customerId;
    public final String name;
    public double balance;

    /*
     *  Constructor
     */
    Customer(int _customerId, String _name){
        customerId = _customerId;
        name = _name;
        balance = 0;
    }

我的Python 2行脚本

import Customer

customer = Customer(1234,"wolf")
print customer.getName()

目录结构如下:
 folder/customer.py    folder/Customer.java folder/Customer.jar

我进入了文件夹并执行了以下操作

    %javac -classpath Customer.jar *.java

然后我的Jython位于Users/wolverine/jython/jython

要执行它,我这样做

       %/Users/wolverin/jython/jython ~/Desktop/folder/customer.py

再次出现的错误是:

   Traceback (most recent call last):
  File "/Users/wolverine/Desktop/project/jython_scripts/customer.py", line 3, in <module>
    customer = Customer(1234,"wolf")
TypeError: No visible constructors for class (Customer)

声明:我刚开始使用Java :(

1个回答

2

客户类不在你的包中,而且你的构造函数不是公共的。这就是你看到错误的原因 - 构造函数对你的 Python 代码不可见(实际上在另一个包中)。

将构造函数行更改为

Customer(int _customerId, String _name){

to

public Customer(int _customerId, String _name){

它应该可以正常工作。此外,您可能会发现这个问题有助于理解public / protected / private / default的工作原理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接