Merge pull request #154 from pvginkel/master

Fixed class loader of the script engine.
This commit is contained in:
Walter Higgins 2014-09-22 13:22:38 +01:00
commit 0906f61575

View file

@ -1,13 +1,16 @@
package net.walterhiggins.scriptcraft; package net.walterhiggins.scriptcraft;
import java.io.InputStreamReader; import org.bukkit.command.Command;
import javax.script.*; import org.bukkit.command.CommandSender;
import java.util.List;
import java.util.ArrayList;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.command.*;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ScriptCraftPlugin extends JavaPlugin implements Listener public class ScriptCraftPlugin extends JavaPlugin implements Listener
{ {
@ -19,6 +22,9 @@ public class ScriptCraftPlugin extends JavaPlugin implements Listener
@Override @Override
public void onEnable() public void onEnable()
{ {
Thread currentThread = Thread.currentThread();
ClassLoader previousClassLoader = currentThread.getContextClassLoader();
currentThread.setContextClassLoader(getClassLoader());
try{ try{
ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngineManager factory = new ScriptEngineManager();
this.engine = factory.getEngineByName("JavaScript"); this.engine = factory.getEngineByName("JavaScript");
@ -32,6 +38,8 @@ public class ScriptCraftPlugin extends JavaPlugin implements Listener
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
this.getLogger().severe(e.getMessage()); this.getLogger().severe(e.getMessage());
}finally{
currentThread.setContextClassLoader(previousClassLoader);
} }
} }
public List<String> onTabComplete(CommandSender sender, Command cmd, public List<String> onTabComplete(CommandSender sender, Command cmd,