Esta pregunta es un seguimiento para: Ejecutando vuéty en Vert.x (W / ES4x)

Me gustaría poder ejecutar ES4X a través de Eclipse (en lugar de NPM). No estoy exactamente seguro si es posible o cómo alamelarlo.

Digamos que tengo la siguiente construcción. Gradle.File

plugins {
  id 'java'
  id 'application'
  id 'com.johnrengleman.shadow' version "5.0.0"
}
sourceCompatibility='1.8'
mainClassName='io.vertx.core.Launcher'
repositories {
  mavenCentral() 
}
dependencies {
  implementation 'io.vertx:vertx-core:3.7.1'
  implementation 'io.vertx:vertx-web:3.7.1'
  implementation 'io.vertx:vertx-lang-js:3.7.1'
  // implementation 'io.reactiverse:es4x:0.8.0'
  // implementation 'io.reactiverse:es4x-pm:0.8.0'
}
processResources {
  from '/src/main/js'
}
shadowJar {
  classifier = 'fat'
  manifest {
    attributes 'Main-Verticle' : 'index.js'
  }
  mergeServiceFiles {
    include 'META-INF/services/io.vertx.core.spi.VerticleFactory'
  }
}

Y mi SRC / Main / JS / index.js se parece a la de la otra publicación referenciada:

import { Router, StaticHandler } from '@vertx/web';
const app = Router.router(vertx);
app.get().handler(StaticHandler.create("dist"));
vertx.createHttpServer().requestHandler(app).listen(8080);

Si creo un frasco ejecutable a través de Shadowjar, obtengo javax.script.scriptExceptions debido a Nashorn asfixia en el contenido de index.js (como se esperaba).

Si desconcierto la implementación de ES4X en la construcción de Grandle, obtengo las excepciones de ClassNotFound para org.graalvm.polyglot.io.filesystem

Entonces, ¿cómo modificaría correctamente esta aplicación para aprovechar ES4X? Supongo que el equivalente de lo que haría el 'ES4X INIT'?

1
ekjcfn3902039 28 jun. 2019 a las 17:45

1 respuesta

La mejor respuesta

Diga que tiene su aplicación es4x y a package.json, cuando ejecute:

npm install

Entrarás dentro de node_modules A algunas carpetas adicionales:

.bin
.lib

En el directorio .bin hay un archivo es4x-launcher.jar que puede usar para iniciar su solicitud de Eclipse. Se referirá a las dependencias que se desempaquetan al directorio .lib. Para hacer que las cosas funcionen bien, el mismo JVM que tiene al ejecutar el comando npm install debe usarse en Eclipse. De lo contrario, podrías terminar con las dependencias faltantes. Este es el caso cuando se ejecuta Graalvm, que no requerirá dependencias de Graaljs o cuando se ejecute en JDK8, que no requerirá jvmci dependencias.

2
Paulo Lopes 2 jul. 2019 a las 10:27