Fix for issue #60 (files locked because the streamreader is not closed)

This commit is contained in:
walterhiggins 2013-02-18 19:33:21 +00:00
parent 4336aa9d47
commit 8ce1de05ea
3 changed files with 17 additions and 2 deletions

View file

@ -1,4 +1,6 @@
import javax.script.*; import javax.script.*;
import java.io.FileReader;
public class jscript public class jscript
{ {
public static void main(String[] args) throws Exception 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]); java.io.File file = new java.io.File(args[0]);
engine.put("engine",engine); engine.put("engine",engine);
engine.put("args",args); engine.put("args",args);
engine.eval(new java.io.FileReader(file)); FileReader fr = new java.io.FileReader(file);
engine.eval(fr);
fr.close();
} }
} }

View file

@ -90,6 +90,7 @@ public class ScriptCraftPlugin extends JavaPlugin
unzipJS(); unzipJS();
if (this.engine == null){ if (this.engine == null){
FileReader reader = null;
try{ try{
ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngineManager factory = new ScriptEngineManager();
File boot = new File(JS_PLUGINS_DIR + "/core/_scriptcraft.js"); 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("__engine",engine);
this.engine.put("__plugin",this); this.engine.put("__plugin",this);
this.engine.put("__script",boot.getCanonicalPath().replaceAll("\\\\","/")); this.engine.put("__script",boot.getCanonicalPath().replaceAll("\\\\","/"));
this.engine.eval(new FileReader(boot)); reader = new FileReader(boot);
this.engine.eval(reader);
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
}finally {
if (reader != null){
try {
reader.close();
}catch(IOException ioe){
// fail silently
}
}
} }
} }
} }

View file

@ -281,6 +281,7 @@ var server = org.bukkit.Bukkit.server;
try{ try{
result = __engine.eval(reader); result = __engine.eval(reader);
_loaded[canonizedFilename] = true; _loaded[canonizedFilename] = true;
reader.close();
}catch (e){ }catch (e){
__plugin.logger.severe("Error evaluating " + canonizedFilename + ", " + e ); __plugin.logger.severe("Error evaluating " + canonizedFilename + ", " + e );
} }