此问题是针对以下问题的后续措施: Running Vuetify on Vert.x (w/ES4X)
我希望能够通过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看起来像其他引用的文章中的一个:
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”会做什么?
答案 0 :(得分:2)
假设您在执行时拥有es4x
应用程序和package.json
,
npm install
您将在node_modules
中进入几个额外的文件夹:
.bin
.lib
在.bin
目录中,有一个es4x-launcher.jar
文件,可用于从Eclipse启动应用程序。它将引用解压缩到.lib
目录中的依赖项。为了使一切正常,应该在eclipse中使用运行npm install
命令时使用的同一JVM。否则,您可能最终会丢失依赖项。在运行不需要graaljs依赖项的graalvm或在不需要jvmci
依赖项的jdk8上运行时,就是这种情况。