大佬教程收集整理的这篇文章主要介绍了groovy – ClassNotFound被认为很奇怪,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么Class.forName会失败?
groovy> class Foo { groovy> } groovy> def f = new Foo() groovy> def cname = f.getClass().getName() groovy> def p = f.getClass().getPackage() groovy> def l = f.getClass().getClassLoader() groovy> println "Foo class name: $cname" groovy> println "Foo package: $p" groovy> println "Foo class loader: ${f.getClass().getClassLoader().toString()}" groovy> println "Current class loader: ${this.getClass().getClassLoader().toString()}" groovy> try { groovy> Class.forName(cName) groovy> } catch (Exception E) { groovy> println e groovy> } groovy> l.findClass("Foo") Foo class name: Foo Foo package: null Foo class loader: groovy.lang.GroovyClassLoader$InnerLoader@2d275595 Current class loader: groovy.lang.GroovyClassLoader$InnerLoader@2d275595 java.lang.ClassnotFoundException: Foo Exception thrown Oct 16,2012 4:43:28 PM org.codehaus.groovy.runtime.StackTraceUtils sanitize WARNING: Sanitizing stacktrace: java.lang.ClassnotFoundException: Foo
谢谢!
尝试
def sHell=new @L_674_3@() def f=sHell.evaluate("class Foo{Foo(){println this.class.classLoader}};def f=new Foo()") println sHell.class.classLoader sHell.evaluate("println this.class.classLoader") println "-----------" println Class.forName("Foo",f.class.classLoader) println Class.forName("Foo",this.class.classLoader)
你会看到第一个Class.forName工作,而不是第二个.运行脚本是类似的,因为它将创建一个不共享sHell的ClassLoader的脚本类
在脚本的上下文中,执行Class.forName将不会使用与此相同的内容.
不确定它是否足够清晰:(
以上是大佬教程为你收集整理的groovy – ClassNotFound被认为很奇怪全部内容,希望文章能够帮你解决groovy – ClassNotFound被认为很奇怪所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。