fix: window restart error

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2020-12-07 13:49:27 +08:00
parent 7f32062dca
commit 824c440f63
2 changed files with 8 additions and 2 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>pw.yumc</groupId> <groupId>pw.yumc</groupId>
<artifactId>MiaoScript</artifactId> <artifactId>MiaoScript</artifactId>
<version>0.9.6</version> <version>0.9.7</version>
<developers> <developers>
<developer> <developer>
<id>502647092</id> <id>502647092</id>
@ -54,6 +54,7 @@
<properties> <properties>
<env.GIT_COMMIT>DEV</env.GIT_COMMIT> <env.GIT_COMMIT>DEV</env.GIT_COMMIT>
<update.changes> <update.changes>
§620-12-07 §afix: 修复 Windows 环境 重载异常;
§620-11-19 §afeat: 新增 JavaScriptTask 类; §620-11-19 §afeat: 新增 JavaScriptTask 类;
§620-11-11 §afeat: 新增 package 版本锁定逻辑; §620-11-11 §afeat: 新增 package 版本锁定逻辑;
§620-09-21 §afeat: 完善 upgrade 逻辑; §620-09-21 §afeat: 完善 upgrade 逻辑;

View File

@ -13,12 +13,14 @@ import java.nio.file.Paths;
* @author Created on 2017/10/25 21:01. * @author Created on 2017/10/25 21:01.
*/ */
public class ScriptEngine { public class ScriptEngine {
private final String root; private final ClassLoader loader;
private final Object logger; private final Object logger;
private final String root;
private final Base base; private final Base base;
private MiaoScriptEngine engine; private MiaoScriptEngine engine;
public ScriptEngine(String root, Object logger, Object instance) { public ScriptEngine(String root, Object logger, Object instance) {
this.loader = Thread.currentThread().getContextClassLoader();
this.root = root; this.root = root;
this.logger = logger; this.logger = logger;
this.base = new Base(instance); this.base = new Base(instance);
@ -38,6 +40,8 @@ public class ScriptEngine {
@SneakyThrows @SneakyThrows
public void enableEngine() { public void enableEngine() {
createEngine(); createEngine();
ClassLoader originLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(this.loader);
Path bios = Paths.get(root, "bios.js"); Path bios = Paths.get(root, "bios.js");
// 如果存在自定义bios就加载自定义的 // 如果存在自定义bios就加载自定义的
if (Files.exists(bios)) { if (Files.exists(bios)) {
@ -46,6 +50,7 @@ public class ScriptEngine {
this.engine.eval("load('classpath:bios.js')"); this.engine.eval("load('classpath:bios.js')");
} }
engine.invokeFunction("boot", root, logger); engine.invokeFunction("boot", root, logger);
Thread.currentThread().setContextClassLoader(originLoader);
} }
@SneakyThrows @SneakyThrows