public static void main(String[] args) { String cfgPath ="game_server_diff.cfg.js"; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL url = classLoader.getResource(cfgPath); // 将配置文件写入的类对象 GameServerDiffConfig diffConfig = new GameServerDiffConfig(); Map<String, Object> _bindings = new HashMap<String, Object>(); _bindings.put("config", diffConfig); Reader _r = null; String _scriptContent; try { _r = new InputStreamReader(url.openStream(), "UTF-8"); _scriptContent = IOUtils.toString(_r); } catch (IOException e) { throw new IllegalStateException("Can't load config from url [" + url + ']'); } finally { IOUtils.closeQuietly(_r); } Bindings bindings = new SimpleBindings(_bindings); ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); try { // 调用ScriptEngine 的eval方法将字符串写入GameServerDiffConfig对象中 Object eval = engine.eval(_scriptContent, bindings); System.out.println(eval); System.out.println(diffConfig.getVersion()); } catch (ScriptException e) { e.printStackTrace(); } }
ScriptEngine 调用js文件,将配置文件的写到对象中
最新推荐文章于 2023-07-06 15:32:38 发布