2011-11-15 5 views
0

GroovyClassLoaderはloadClass()を使用して遅延コンパイルをサポートしていますか?loadClass()を使用した遅延コンパイルのGroovyClassLoaderのサポートは可能です

+0

は、あなたがより多くのあなたが何を意味するか説明できloadClassメソッドをオーバーライドしますか?あなたは何をしようとしているのですか? –

+0

@tim_yates "Class_B"に依存する "Class_A"がある場合、私はそうします... ParseClass( "Class_A"); GroovyはClass_AがClass_Bに依存しているので、classbをロードするので、基本的にカスタムGroovyクラスローダーを構築します – anish

答えて

0

はGroovyClassloaderを拡張し、

@Override 
    public Class loadClass(String name, boolean lookupScriptFiles, 
      boolean preferClassOverScript) throws ClassNotFoundException, 
      CompilationFailedException { 
     // TODO Auto-generated method stub 
     try 
     { 
     Class<?> loadedClass = super.loadClass(name, lookupScriptFiles, preferClassOverScript); 
     if (loadedClass !=null) { 
      return loadedClass; 
     } 
     } 
     catch (ClassNotFoundException e) 
     { 
      System.out.println("here --------------"); 
     } 

     int indx = name.lastIndexOf('.'); 
      String substr = name; 
      if (indx != -1) 
      { 
       substr = name.substring(indx + 1); 
      } 
      String groovyFileName = substr + ".groovy"; 
      String path = "C:\\" + groovyFileName; 

      try 
      { 
       return parseClass(new File(path).toString(), groovyFileName); 
      } 
      catch (CompilationFailedException exception) 
      { 
       throw exception; 
      } 
    } 
関連する問題