доступ к классу 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.