From 8ce1de05ea627b87e56dc30ff23cbf8ea91db2b8 Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Mon, 18 Feb 2013 19:33:21 +0000 Subject: [PATCH] Fix for issue #60 (files locked because the streamreader is not closed) --- src/docs/java/jscript.java | 6 +++++- .../walterhiggins/scriptcraft/ScriptCraftPlugin.java | 12 +++++++++++- src/main/javascript/core/_scriptcraft.js | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/docs/java/jscript.java b/src/docs/java/jscript.java index b5d5cca..777fe7d 100644 --- a/src/docs/java/jscript.java +++ b/src/docs/java/jscript.java @@ -1,4 +1,6 @@ import javax.script.*; +import java.io.FileReader; + public class jscript { public static void main(String[] args) throws Exception @@ -8,6 +10,8 @@ public class jscript java.io.File file = new java.io.File(args[0]); engine.put("engine",engine); engine.put("args",args); - engine.eval(new java.io.FileReader(file)); + FileReader fr = new java.io.FileReader(file); + engine.eval(fr); + fr.close(); } } diff --git a/src/main/java/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java b/src/main/java/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java index 5185be4..385602c 100644 --- a/src/main/java/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java +++ b/src/main/java/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java @@ -90,6 +90,7 @@ public class ScriptCraftPlugin extends JavaPlugin unzipJS(); if (this.engine == null){ + FileReader reader = null; try{ ScriptEngineManager factory = new ScriptEngineManager(); File boot = new File(JS_PLUGINS_DIR + "/core/_scriptcraft.js"); @@ -97,9 +98,18 @@ public class ScriptCraftPlugin extends JavaPlugin this.engine.put("__engine",engine); this.engine.put("__plugin",this); this.engine.put("__script",boot.getCanonicalPath().replaceAll("\\\\","/")); - this.engine.eval(new FileReader(boot)); + reader = new FileReader(boot); + this.engine.eval(reader); }catch(Exception e){ e.printStackTrace(); + }finally { + if (reader != null){ + try { + reader.close(); + }catch(IOException ioe){ + // fail silently + } + } } } } diff --git a/src/main/javascript/core/_scriptcraft.js b/src/main/javascript/core/_scriptcraft.js index 4ab4c8c..94ebf5a 100644 --- a/src/main/javascript/core/_scriptcraft.js +++ b/src/main/javascript/core/_scriptcraft.js @@ -281,6 +281,7 @@ var server = org.bukkit.Bukkit.server; try{ result = __engine.eval(reader); _loaded[canonizedFilename] = true; + reader.close(); }catch (e){ __plugin.logger.severe("Error evaluating " + canonizedFilename + ", " + e ); }