运行 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
依赖项时就是这种情况。
此问题是以下问题的后续问题:
我希望能够通过 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
依赖项时就是这种情况。