From: Michael Jumper Date: Mon, 26 Mar 2012 19:34:04 +0000 (-0700) Subject: Get ClassLoader within doPrivileged(). X-Git-Url: http://git.alex.org.uk Get ClassLoader within doPrivileged(). --- diff --git a/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java b/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java index 7920157..151b23c 100644 --- a/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java +++ b/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java @@ -42,6 +42,9 @@ import java.io.FilenameFilter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Collection; import net.sourceforge.guacamole.GuacamoleException; @@ -66,14 +69,21 @@ public class GuacamoleClassLoader extends ClassLoader { try { // Attempt to create singleton classloader which loads classes from // all .jar's in the lib directory defined in guacamole.properties - instance = new GuacamoleClassLoader( - GuacamoleProperties.getProperty(BasicGuacamoleProperties.LIB_DIRECTORY) - ); + instance = AccessController.doPrivileged(new PrivilegedExceptionAction() { + + @Override + public GuacamoleClassLoader run() throws GuacamoleException { + return new GuacamoleClassLoader( + GuacamoleProperties.getProperty(BasicGuacamoleProperties.LIB_DIRECTORY) + ); + } + + }); } - catch (GuacamoleException e) { + catch (PrivilegedActionException e) { // On error, record exception - exception = e; + exception = (GuacamoleException) e.getException(); } }