Невозможно перезвонить на Java из Python (при некоторых обстоятельствах, но не при других)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно перезвонить на Java из Python (при некоторых обстоятельствах, но не при других)

Сообщение Anonymous »

Я пытался использовать Graal Python для вызова сценария Python из Java, и Python вызывает обратно хост-приложение Java (простой вызов отображения сообщения).
Все это работает нормально при запуске из Eclipse. Однако когда я создаю приложение с использованием jpackage в macOS, обратный вызов с Python на Java завершается с ошибкой
AttributeError: foreign object has no attribute 'msg'.

Почему Graal Python будет вести себя по-разному с обратными вызовами в зависимости от того, как упаковано приложение?
Внутри конструктора Java:
this.pythonContext = Context.newBuilder()
.allowAllAccess(true)
.option("python.PythonPath", pythonPath)
.build();

// load initialisation script source to execute
Source source = Source.newBuilder("python", new File(".....myscript.py")).build();
this.pythonContext.eval(source);

// create PAAFBuilder with reference to this JAAFBuilder for making callbacks
this.paafBuilder = this.pythonContext.getBindings("python").getMember("create").execute(this);

Обратный вызов msg() для отображения сообщения на Java из Python:
@HostAccess.Export
public void msg(String msg) {
formatContext.getMessageContext().msg(msg);
System.out.println(msg);
}

Зависимости Maven


org.graalvm.polyglot
polyglot
${graalpy.version}


org.graalvm.polyglot
python
${graalpy.version}
pom



Подробнее здесь: https://stackoverflow.com/questions/797 ... not-others
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»