Я пытаюсь создать собственный образ с помощью 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
Пожалуйста, может кто-нибудь мне помочь? большое спасибо