[Groovy] 关于Groovy中class.classLoader的问题
magixyu
2009-11-13
想用Groovy做一个动态的加载jar文件的脚本,碰到了下面的问题,请大家帮忙看看。
Test.groovy loader = this.class.classLoader.rootLoader if (loader == null) { println("Loader is empty") return } fileUrl = new URL("jar:file:///home/netadmin/groovy-test/base64.jar!/") loader.addURL(fileUrl) def encoder = Class.forName('base64.Base64En') println encoder.base64Encode("xxx:xxx") 如上的groovy代码用groovy Test.groovy运行正常,能显示"xxx:xxx"的base64编码,也就是说loader 不是空。 但是如果用groovyc编译后,运行: java -cp /opt/groovy/embeddable/groovy-all-1.6.5.jar:. Test 则显示"Loader is empty" 这是为什么呢? 我把上面第一行换成 loader=this.class.classLoader 用groovyc编译后,运行没有问题。但是直接在groovy环境下,会有class not found的异常。 请帮忙解释一下this.class.classLoader和this.class.classLoader.rootLoader的关系和区别,谢谢了 |
相关讨论
相关资源推荐
- AspectJ实现设计模式(二)——策略模式
- AspectJ实现设计模式(一)——观察者模式 (转)
- AspectJ实现设计模式(六)—单例模式 (转)
- AspectJ实现设计模式(三)——工厂方法模式
- AspectJ实现设计模式(一)——观察者模式
- Android Studio:Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
- gradle报错Could not initialize class org.codehaus.groovy.classgen.Verifier
- 【已解决】java.lang.ClassNotFoundException: groovy.lang.GroovyObject
- Groovy深入探索——Groovy的ClassLoader体系
- java.lang.ClassNotFoundException: groovy.lang.GroovyObject