史诗级大饼,请叫我黑饼王。
This commit is contained in:
@@ -1,76 +0,0 @@
|
||||
package me.skymc.taboolib.javascript;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
|
||||
import javax.script.Invocable;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
@Deprecated
|
||||
public class JavaScriptUtils {
|
||||
|
||||
private static ScriptEngineManager manager = new ScriptEngineManager();
|
||||
|
||||
public static ScriptEngineManager getScriptManager() {
|
||||
return manager;
|
||||
}
|
||||
|
||||
public static void invokeJavaScript(File jsFile, String method, Object... o) {
|
||||
ScriptEngine engine = manager.getEngineByName("javascript");
|
||||
try {
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(Main.class.getClassLoader());
|
||||
|
||||
FileReader reader = new FileReader(jsFile);
|
||||
engine.eval(reader);
|
||||
|
||||
// TODO run
|
||||
|
||||
Thread.currentThread().setContextClassLoader(classLoader);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Object JavaScriptInterface(String jsFile, Object... o) {
|
||||
|
||||
ScriptEngine engine = manager.getEngineByName("javascript");
|
||||
try {
|
||||
FileReader reader = new FileReader(jsFile);
|
||||
engine.eval(reader);
|
||||
|
||||
if (engine instanceof Invocable) {
|
||||
return ((Invocable) engine).invokeFunction("main", o);
|
||||
}
|
||||
|
||||
reader.close();
|
||||
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void JavaScriptExecute(String jsFile, Object... o) {
|
||||
|
||||
ScriptEngine engine = manager.getEngineByName("javascript");
|
||||
try {
|
||||
FileReader reader = new FileReader(jsFile);
|
||||
engine.eval(reader);
|
||||
|
||||
if (engine instanceof Invocable) {
|
||||
((Invocable) engine).invokeFunction("main", o);
|
||||
}
|
||||
|
||||
reader.close();
|
||||
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package me.skymc.taboolib.javascript;
|
||||
|
||||
import com.ilummc.tlib.logger.TLogger;
|
||||
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import javax.script.Compilable;
|
||||
import javax.script.CompiledScript;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2018-06-02 22:48
|
||||
*/
|
||||
public class ScriptHandler {
|
||||
|
||||
private static ScriptEngine scriptEngine;
|
||||
private static ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
|
||||
private static FileConfiguration scriptsFile;
|
||||
|
||||
public static void inst() {
|
||||
try {
|
||||
NashornScriptEngineFactory factory = (NashornScriptEngineFactory) scriptEngineManager.getEngineFactories().stream().filter(factories -> "Oracle Nashorn".equalsIgnoreCase(factories.getEngineName())).findFirst().orElse(null);
|
||||
scriptEngine = Objects.requireNonNull(factory).getScriptEngine("-doe", "--global-per-engine");
|
||||
} catch (Exception ignored) {
|
||||
scriptEngine = scriptEngineManager.getEngineByName("JavaScript");
|
||||
}
|
||||
}
|
||||
|
||||
public static CompiledScript compile(String script) {
|
||||
try {
|
||||
Compilable compilable = (Compilable) scriptEngine;
|
||||
return compilable.compile(script);
|
||||
} catch (Exception e) {
|
||||
TLogger.getGlobalLogger().info("§4JavaScript §c" + script + "§4 Compile Failed: §c" + e.toString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// *********************************
|
||||
//
|
||||
// Getter and Setter
|
||||
//
|
||||
// *********************************
|
||||
|
||||
public static ScriptEngine getScriptEngine() {
|
||||
return scriptEngine;
|
||||
}
|
||||
|
||||
public static ScriptEngineManager getScriptEngineManager() {
|
||||
return scriptEngineManager;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user