Size: a a a

2020 July 16

D

Dmitry in graalvm_ru
Vlad Kondratenko
этот же код не на граале работает?
Да
источник

D

Dmitry in graalvm_ru
Сейчас компилятор дал подсказки что делать, я запустил с такими ключами: --no-fallback --initialize-at-run-time=sun.awt.X11.MotifDnDConstants --initialize-at-run-time=sun.awt.X11.WindowPropertyGetter --initialize-at-run-time=sun.awt.X11.XDataTransferer --initialize-at-run-time=sun.awt.X11.XDnDConstants --initialize-at-run-time=sun.awt.X11.XSelection --initialize-at-run-time=sun.awt.X11.XWM --initialize-at-run-time=sun.awt.X11.XWindow --initialize-at-run-time=sun.awt.X11GraphicsConfig --initialize-at-run-time=sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher --allow-incomplete-classpath
источник

D

Dmitry in graalvm_ru
Но теперь совсем не собралось, до этого был fallback image с привязкой к java runtime
источник

ВВ

Виктор Вербицкий... in graalvm_ru
Dmitry
Коллеги, кто-нибудь сталкивался с багом: "java.awt.AWTError: Local GraphicsEnvironment must not be null" при сборке приложения в нативный бинарник?
Официально AWT и Swing не поддерживаются. После ряда изотерических упражнений мне удалось добиться работы со шрифтами и рендеринга графических изображений: https://github.com/vektory79/plantuml-native-image

Но сам графический интерфейс пока запустить так и не получается...
источник

D

Dmitry in graalvm_ru
Виктор Вербицкий
Официально AWT и Swing не поддерживаются. После ряда изотерических упражнений мне удалось добиться работы со шрифтами и рендеринга графических изображений: https://github.com/vektory79/plantuml-native-image

Но сам графический интерфейс пока запустить так и не получается...
Ого. Спасибо
источник

ВВ

Виктор Вербицкий... in graalvm_ru
На самом деле там ну очень много надо пописывать, чтобы хоть как-то завелось. Ну и похачить svm.jar, убрав блокировку с использования Swing. Иначе будет просто захардкоженная ошибка вылетать.
источник

ВВ

Виктор Вербицкий... in graalvm_ru
Там в readme описано что хачить надо
источник

D

Dmitry in graalvm_ru
Спасибо большое, попробую ваш метод
источник

λ

λoλdog in graalvm_ru
Ну для более менее большого приложения, придётся городить вечность
источник

OS

Oleg Shelajev in graalvm_ru
Вряд-ли получится авт сделать
источник

OS

Oleg Shelajev in graalvm_ru
Но если что получится напишите!
источник

ВВ

Виктор Вербицкий... in graalvm_ru
Это да. Меня всё не отпускает ощущение, что это просто я где-то накосячил - потому и не заводится...
источник

D

Dmitry in graalvm_ru
Oleg Shelajev
Но если что получится напишите!
Хорошо)
источник
2020 July 20

A

Art in graalvm_ru
Привет. Есть скрипт на JS, хочется его выполнить на GraalVM JS, но так как в скрипте есть использование глобального объекта window, то при eval падает с исключением
```Exception in thread "main" ReferenceError: window is not defined```В Nashorn можно было как то так https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions#Nashornextensions-Object.bindProperties

Есть ли какой эквивалент для создания окружения для GraalVM JS? Спасибо!
источник

OS

Oleg Shelajev in graalvm_ru
Context.getBindings()?
источник

DK

Dmitriy Kovalenko in graalvm_ru
Art
Привет. Есть скрипт на JS, хочется его выполнить на GraalVM JS, но так как в скрипте есть использование глобального объекта window, то при eval падает с исключением
```Exception in thread "main" ReferenceError: window is not defined```В Nashorn можно было как то так https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions#Nashornextensions-Object.bindProperties

Есть ли какой эквивалент для создания окружения для GraalVM JS? Спасибо!
var window = this;
     window.setTimeout = function (cb, time){ cb() };
     window.clearTimeout = function (){};
источник

DK

Dmitriy Kovalenko in graalvm_ru
чтоб не падало и не стопорилось на таймаут функциях
источник

OS

Oleg Shelajev in graalvm_ru
public static class MyClass {
   public int               id    = 42;
   public String            text  = "42";
   public int[]             arr   = new int[]{1, 42, 3};
   public Callable<Integer> ret42 = () -> 42;
}

public static void main(String[] args) {
   try (Context context = Context.newBuilder()
                              .allowAllAccess(true)
                          .build()) {
       context.getBindings("js").putMember("javaObj", new MyClass());
       boolean valid = context.eval("js",
              "    javaObj.id         == 42"          +
              " && javaObj.text       == '42'"        +
              " && javaObj.arr[1]     == 42"          +
              " && javaObj.ret42()    == 42")
          .asBoolean();
       assert valid == true;
   }
}


вот так положить есть window в байндинги например?
источник

A

Art in graalvm_ru
Dmitriy Kovalenko
var window = this;
     window.setTimeout = function (cb, time){ cb() };
     window.clearTimeout = function (){};
В силу некоторых причин я не могу изменить JS код, но спасибо!
источник

A

Art in graalvm_ru
Oleg Shelajev
public static class MyClass {
   public int               id    = 42;
   public String            text  = "42";
   public int[]             arr   = new int[]{1, 42, 3};
   public Callable<Integer> ret42 = () -> 42;
}

public static void main(String[] args) {
   try (Context context = Context.newBuilder()
                              .allowAllAccess(true)
                          .build()) {
       context.getBindings("js").putMember("javaObj", new MyClass());
       boolean valid = context.eval("js",
              "    javaObj.id         == 42"          +
              " && javaObj.text       == '42'"        +
              " && javaObj.arr[1]     == 42"          +
              " && javaObj.ret42()    == 42")
          .asBoolean();
       assert valid == true;
   }
}


вот так положить есть window в байндинги например?
Спасибо! Попробую и отпишусь!
источник