运行 Vert.x (w/ES4X) 通过 Eclipse

Running Vert.x (w/ES4X) via Eclipse

此问题是以下问题的后续问题:

我希望能够通过 Eclipse(而不是 NPM)运行ES4X。我不确定是否可行或如何连接它。

假设我有以下 build.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'
  }
}

和我的 src/main/js/index.js 看起来像另一个参考 post:

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

如果我通过 shadowJar 创建可执行 jar,由于 Nashorn 在 index.js 内容上阻塞(如预期),我得到 javax.script.ScriptExceptions。

如果我取消注释 gradle 构建中的 es4x 实现,我会得到 org.graalvm.polyglot.io.FileSystem

的 ClassNotFound 异常

那么我该如何正确修改此应用程序以利用 ES4X?我想相当于 'es4x init' 会做什么?

假设您有 es4x 应用程序和 package.json,当您执行时:

npm install

您将进入 node_modules 几个额外的文件夹:

.bin
.lib

.bin 目录中有一个 es4x-launcher.jar 文件,您可以使用该文件从 Eclipse 启动您的应用程序。它将引用解压缩到 .lib 目录的依赖项。为了使 运行 时的 JVM 正常工作,应在 Eclipse 中使用 npm install 命令。否则你可能最终会缺少依赖项。当 运行 graalvm 不需要 graaljs 依赖项或者 运行 on jdk8 不需要 jvmci 依赖项时就是这种情况。