You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/03/29 18:15:43 UTC

svn commit: r1828010 - /uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java

Author: schor
Date: Thu Mar 29 18:15:43 2018
New Revision: 1828010

URL: http://svn.apache.org/viewvc?rev=1828010&view=rev
Log:
[UIMA-5754] modify UimaBootstrap to not depend on application loader being an instance of URLClassLoader.

Modified:
    uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java

Modified: uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java?rev=1828010&r1=1828009&r2=1828010&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java (original)
+++ uima/uimaj/trunk/uimaj-bootstrap/src/main/java/org/apache/uima/bootstrap/UimaBootstrap.java Thu Mar 29 18:15:43 2018
@@ -71,11 +71,11 @@ public class UimaBootstrap {
     URL[] urls = getUrls();
 //    URLClassLoader cl = new ParentFirstWithResourceClassLoader(urls);
 //    Thread.currentThread().setContextClassLoader(cl);
-    addUrlsToSystemLoader(urls);
+    ClassLoader myClassLoader = addUrlsToSystemLoader(urls);
     
     Class<?> classToLaunch = null;
     try {
-      classToLaunch = ClassLoader.getSystemClassLoader().loadClass(args[0]);
+      classToLaunch = myClassLoader.loadClass(args[0]);
     } catch (ClassNotFoundException e) {
      System.err.println("Cannot find class to launch");
      System.exit(1);
@@ -142,18 +142,20 @@ public class UimaBootstrap {
     urls.add(url);
   }
 
-  private static void addUrlsToSystemLoader(URL[] urls) throws IOException {
-    URLClassLoader systemClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
-    try {
-       Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
-       method.setAccessible(true); // is normally "protected"
-       for (URL url : urls) {
-         method.invoke(systemClassLoader, new Object[]{url});
-       }
-    } catch (Throwable t) {
-       t.printStackTrace();
-       throw new IOException("Error, could not add URL to system classloader");
-    } 
+  private static ClassLoader addUrlsToSystemLoader(URL[] urls) throws IOException {
+    return new URLClassLoader(urls, ClassLoader.getSystemClassLoader());
+    
+//    URLClassLoader systemClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
+//    try {
+//       Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
+//       method.setAccessible(true); // is normally "protected"
+//       for (URL url : urls) {
+//         method.invoke(systemClassLoader, new Object[]{url});
+//       }
+//    } catch (Throwable t) {
+//       t.printStackTrace();
+//       throw new IOException("Error, could not add URL to system classloader");
+//    } 
   }