• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

218
Vistas
Cómo usar ScriptEngine para compilar js en tiempo de ejecución en una imagen nativa

versión de graalvm: openjdk versión "17.0.2" 2022-01-18 OpenJDK Runtime Environment GraalVM CE 22.0.0.2 (compilación 17.0.2+8-jvmci-22.0-b05) Servidor OpenJDK de 64 bits VM GraalVM CE 22.0.0.2 (compilación 17.0.2+8-jvmci-22.0-b05, modo mixto, uso compartido)

sistema operativo: win10

P:Quiero usar una imagen nativa para construir mi proyecto. Cuando construyo, no tengo ningún error. Pero cuando ejecuto, me mostrará

 ERROR: [Script Manager] Exception occurred. Path: test.js Exception: java.lang.NullPointerException

mi método

 protected Invocable getInvocable(String path) { String truePath = ScriptPath(path); try { File scriptFile = new File(ScriptPath(path)); String scriptStr = new String(Files.readAllBytes(scriptFile.toPath()), StandardCharsets.UTF_8); // Nashorn // CompiledScript compiledScript = ((NashornScriptEngine) // engine).compile(scriptStr); // graal ScriptEngine graalEngine = new ScriptEngineManager().getEngineByName("js"); CompiledScript compiledScript = ((Compilable) graalEngine).compile(scriptStr); if (compiledScript == null) return null; compiledScript.eval(); return (Invocable) compiledScript.getEngine(); } catch (Exception e) { Logger.error("[Script Manager] Exception occurred. Path: " + path + "\r\nException: " + e); return null; } }

mis argumentos de construcción

 --no-fallback --verbose --initialize-at-build-time=org.slf4j.LoggerFactory --initialize-at-build-time=org.apache.logging.slf4j.Log4jLogger --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger --initialize-at-run-time=io.netty.util.internal.logging.Slf4JLoggerFactory$NopInstanceHolder --enable-url-protocols=http --enable-url-protocols=https --allow-incomplete-classpath -J-Duser.language=zh_TW -H:+AddAllCharsets -H:+ReportExceptionStackTraces --report-unsupported-elements-at-runtime -Dpolyglot.js.nashorn-compat=true -Dfile.encoding=UTF-8 --language:js

Leí muchos artículos, pero nadie trata de leer el archivo desde la ruta local. Quiero saber cómo puedo hacer para que el código pueda compilar js en tiempo de ejecución . Funciona muy bien en tarro. por favor! gracias a todos los amigos ~

over 3 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda