src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java

Print this page

        

@@ -139,19 +139,40 @@
     public ScriptEngine getScriptEngine() {
         return new NashornScriptEngine(this, getAppClassLoader());
     }
 
     /**
+     * Create a new Script engine initialized by given class loader.
+     *
+     * @param appLoader class loader to be used as script "app" class loader.
+     * @return newly created script engine.
+     */
+    public ScriptEngine getScriptEngine(final ClassLoader appLoader) {
+        return new NashornScriptEngine(this, appLoader);
+    }
+
+    /**
      * Create a new Script engine initialized by given arguments.
      *
      * @param args arguments array passed to script engine.
      * @return newly created script engine.
      */
     public ScriptEngine getScriptEngine(final String[] args) {
         return new NashornScriptEngine(this, args, getAppClassLoader());
     }
 
+    /**
+     * Create a new Script engine initialized by given arguments.
+     *
+     * @param args arguments array passed to script engine.
+     * @param appLoader class loader to be used as script "app" class loader.
+     * @return newly created script engine.
+     */
+    public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader) {
+        return new NashornScriptEngine(this, args, appLoader);
+    }
+
     // -- Internals only below this point
 
     private static final List<String> names;
     private static final List<String> mimeTypes;
     private static final List<String> extensions;

@@ -178,11 +199,11 @@
         return Collections.unmodifiableList(Arrays.asList(elements));
     }
 
     private static ClassLoader getAppClassLoader() {
         if (System.getSecurityManager() == null) {
-            return ClassLoader.getSystemClassLoader();
+            return Thread.currentThread().getContextClassLoader();
         }
 
         // Try to determine the caller class loader. Use that if it can be
         // found. If not, use the class loader of nashorn itself as the
         // "application" class loader for scripts.