доступ к классу java из python с помощью jython


Я написал класс на java, который я хочу выполнить на python, используя jython. Во-первых, ошибка, которую я получаю?

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 lines

import Customer

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

Структура каталогов похожа на

 folder/customer.py    folder/Customer.java folder/Customer.jar

Я пошел в папку и сделал

    %javac -classpath Customer.jar *.java

, а затем мой Jython-это в пользователи/Росомаха/языка 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 3

1 ответ:

Класс Customer отсутствует в пакете, а конструктор не является общедоступным. Вот почему вы получаете ошибку, которую видите - конструктор не виден вашему коду python (который фактически находится в другом пакете)

Измените строку конструктора с

Customer(int _customerId, String _name){

К

public Customer(int _customerId, String _name){

И это должно работать нормально. Кроме того, вы можете найти этот вопрос полезным для понимания того, как работают public / protected / private / default.