доступ к классу 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 ответ:
Класс Customer отсутствует в пакете, а конструктор не является общедоступным. Вот почему вы получаете ошибку, которую видите - конструктор не виден вашему коду python (который фактически находится в другом пакете)
Измените строку конструктора с
Customer(int _customerId, String _name){К
public Customer(int _customerId, String _name){И это должно работать нормально. Кроме того, вы можете найти этот вопрос полезным для понимания того, как работают public / protected / private / default.