feat: 循环判断ext目录寻找js引擎文件并且加载

Signed-off-by: 502647092 <admin@yumc.pw>
merge/11/HEAD
502647092 2017-11-11 18:13:37 +08:00
parent d3b8226b69
commit e74c8275e2
2 changed files with 20 additions and 14 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>pw.yumc</groupId> <groupId>pw.yumc</groupId>
<artifactId>YumCore</artifactId> <artifactId>YumCore</artifactId>
<version>1.8.6</version> <version>1.8.7</version>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<plugins> <plugins>

View File

@ -18,6 +18,8 @@ import javax.script.ScriptEngineManager;
import javax.script.ScriptException; import javax.script.ScriptException;
import javax.script.SimpleBindings; import javax.script.SimpleBindings;
import lombok.val;
/** /**
* *
* *
@ -59,7 +61,9 @@ public class MiaoScriptEngine implements ScriptEngine, Invocable {
} catch (final NullPointerException ignored) { } catch (final NullPointerException ignored) {
} }
if (engine == null) { if (engine == null) {
File nashorn = new File(System.getProperty("java.ext.dirs").split(File.pathSeparator)[0], "nashorn.jar"); val dirs = System.getProperty("java.ext.dirs").split(File.pathSeparator);
for (String dir : dirs) {
File nashorn = new File(dir, "nashorn.jar");
if (nashorn.exists()) { if (nashorn.exists()) {
try { try {
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
@ -70,10 +74,12 @@ public class MiaoScriptEngine implements ScriptEngine, Invocable {
method.invoke(Thread.currentThread().getContextClassLoader(), url); method.invoke(Thread.currentThread().getContextClassLoader(), url);
engineManager = new ScriptEngineManager(); engineManager = new ScriptEngineManager();
engine = engineManager.getEngineByName(engineType); engine = engineManager.getEngineByName(engineType);
} catch (NoSuchMethodException | MalformedURLException | IllegalAccessException | InvocationTargetException ignored) { } catch (NoSuchMethodException | MalformedURLException | IllegalAccessException | InvocationTargetException | NullPointerException ignored) {
ignored.printStackTrace(); }
return;
} }
} }
throw new UnsupportedOperationException("当前环境不支持 " + engineType + " 脚本类型!");
} }
} }