首页 文章

使用loadClass()进行延迟编译的GroovyClassLoader支持是可行的

提问于
浏览
0

GroovyClassLoader是否支持使用loadClass()进行延迟编译?

1 回答

  • 0

    扩展GroovyClassloader并覆盖loadclass方法

    @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;
                }
        }
    

相关问题