TypeError: invokeMember GraalVM native-image

Я пытаюсь создать собственный образ с помощью GraalVM, мой код:

import org.graalvm.polyglot.HostAccess;

public class Console {

    @HostAccess.Export
    public void print(String msg){
        System.out.println(msg);
    }
}

Затем я называю сам код следующим образом:

public void callMethod(CommonRequest request) throws ScriptException, IOException, NoSuchMethodException {
        StringBuilder s = new StringBuilder();

        s.append(new PluginJS().load(request.getMethodPath(), true));

        Context context = null;
        try {
            context = Context.newBuilder()
                    .allowHostAccess(HostAccess.ALL)
                    .allowAllAccess(true)
                    .allowCreateThread(true)
                    .allowHostClassLoading(true)
                    .allowIO(true)
                    .allowNativeAccess(true)
                    .allowCreateProcess(true).build();

            putMembers(context.getBindings("js"));

            context.eval("js", s.toString());

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            context.close();

        }

    }

    private void putMembers(Value value) { 
        value.putMember("Console", new Console());


    }

Он отлично работает, когда я запускаю IDE или java -jar, но когда я пытаюсь скомпилировать собственный образ, выдает ошибку. Ниже сообщается об ошибке в командной строке, используемой для компиляции собственного образа.

Ошибка:

Ошибка типа: invokeMember (печать) в JavaObject [com.compiler.commons.log.Console@113a2d320 (com.compiler.commons.log.Console)] не удалось из-за: Неизвестный идентификатор: печать

Командная строка

graalvm-ce-java8-20.0.0/Contents/Home/bin/java -jar -agentlib:native-image-agent=config-merge-dir=/Users/ze/Documents/java/tool/config compiler-1.0-SNAPSHOT-jar-with-dependencies.jar

graalvm-ce-java8-20.0.0/Contents/Home/bin/native-image --language:js --initialize-at-build-time nomeApp -jar compiler-1.0-SNAPSHOT-jar-with-dependencies.jar

Пожалуйста, может кто-нибудь мне помочь? большое спасибо


person Alisson Pedrina    schedule 23.05.2020    source источник


Ответы (1)


Я решил, мне нужно очистить от файлов "/ config", запустить приложение вместе с агентом, а затем скомпилировать, добавив некоторые другие параметры. Смотрите оба ниже:

агент

/Users/ze/Documents/programs/graalvm-ce-java8-20.0.0/Contents/Home/bin/java -jar -agentlib:native-image-agent=config-merge-dir=/Users/ze/Documents/gitprojects/java/tool/config ./target/compiler-1.0-SNAPSHOT-jar-with-dependencies.jar 

скомпилировать

sudo /Users/ze/Documents/programs/graalvm-ce-java8-20.0.0/Contents/Home/bin/native-image --language:js --initialize-at-build-time -H:+AllowIncompleteClasspath -H:+ReportExceptionStackTraces --report-unsupported-elements-at-runtime -H:ConfigurationFileDirectories=/Users/ze/Documents/gitprojects/java/tool/config nameOfApp -jar ./target/compiler-1.0-SNAPSHOT-jar-with-dependencies.jar
person Alisson Pedrina    schedule 24.05.2020