ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From co...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs ExecuteJava.java
Date Sat, 17 Feb 2001 14:52:48 GMT
conor       01/02/17 06:52:48

  Modified:    src/main/org/apache/tools/ant Tag: ANT_13_BRANCH
                        AntClassLoader.java
               src/main/org/apache/tools/ant/taskdefs Tag: ANT_13_BRANCH
                        ExecuteJava.java
  Log:
  If a classpath is given to a java task, it is now used exclusively. So if a
  class exists on the base class loader and not on the given classpath,
  a ClassNotFoundException will be raised. The java.* and javax.* hierarchies
  are exempt.
  
  Setting build.sysclasspath="first" or "last" will still allow the system
  classpath be picked up.
  
  PR:	630
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.14.2.1  +19 -0     jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java
  
  Index: AntClassLoader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java,v
  retrieving revision 1.14
  retrieving revision 1.14.2.1
  diff -u -r1.14 -r1.14.2.1
  --- AntClassLoader.java	2001/02/04 02:34:28	1.14
  +++ AntClassLoader.java	2001/02/17 14:52:47	1.14.2.1
  @@ -103,6 +103,12 @@
        */
       private Vector loaderPackages = new Vector();
       
  +    /**
  +     * This flag indicates that the classloader will ignore the base
  +     * classloader if it can;t find a class.
  +     */
  +    private boolean ignoreBase = false;
  +    
       private static Method getProtectionDomain = null;
       private static Method defineClassProtectionDomain = null;
       static {
  @@ -143,7 +149,17 @@
           this(project, classpath);
           this.systemFirst = systemFirst;
       }
  +
  +    /**
  +     * Set this classloader to run in isolated mode. In isolated mode, classes not
  +     * found on the given classpath will not be referred to the base class loader
  +     * but will cause a classNotFoundException.
  +     */
  +    public void setIsolated(boolean isolated) {
  +        ignoreBase = isolated;
  +    }
       
  +    
       /**
        * Add a package root to the list of packages which must be loaded on the 
        * system loader.
  @@ -354,6 +370,9 @@
                       project.log("Class " + classname + " loaded from ant loader", Project.MSG_DEBUG);
                   }
                   catch (ClassNotFoundException cnfe) {
  +                    if (ignoreBase) {
  +                        throw cnfe;
  +                    }
                       theClass = findBaseClass(classname);
                       project.log("Class " + classname + " loaded from system loader", Project.MSG_DEBUG);
                   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.1   +2 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
  
  Index: ExecuteJava.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- ExecuteJava.java	2001/01/03 14:18:30	1.7
  +++ ExecuteJava.java	2001/02/17 14:52:47	1.7.2.1
  @@ -119,7 +119,8 @@
               if (classpath == null) {
                   target = Class.forName(classname);
               } else {
  -                AntClassLoader loader = new AntClassLoader(project, classpath);
  +                AntClassLoader loader = new AntClassLoader(project, classpath, false);
  +                loader.setIsolated(true);
                   target = loader.forceLoadClass(classname);
               }
               final Method main = target.getMethod("main", param);
  
  
  

Mime
View raw message