Я пытался использовать 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 ... es-but-not
Невозможно перезвонить на Java из Graal Python (при некоторых обстоятельствах, но не при других) ⇐ JAVA
Программисты JAVA общаются здесь
1761065093
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79795986/unable-to-call-back-to-java-from-graal-python-under-some-circumstances-but-not[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия