groovy – 找不到合适的类加载器

groovy – 找不到合适的类加载器,第1张

概述我在课上开始有这个: @Grab(group = 'org.ccil.cowan.tagsoup', module = 'tagsoup', version = '1.2')class MyClass{... 我试图单元测试这个类,但每当我尝试运行JUnit 4测试,我得到这个错误: Caused by: java.lang.RuntimeException: No suitable Class 我在课上开始有这个:

@Grab(group = 'org.ccil.cowan.Tagsoup',module = 'Tagsoup',version = '1.2')class MyClass{...

我试图单元测试这个类,但每当我尝试运行JUnit 4测试,我得到这个错误:

Caused by: java.lang.RuntimeException: No suitable ClassLoader found for grab    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:52)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:198)    at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:163)    at groovy.grape.GrapeIvy$chooseClassLoader.callCurrent(UnkNown Source)    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)    at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:227)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:225)    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)    at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:216)    at groovy.grape.Grape.grab(Grape.java:131)    at groovy.grape.Grape$grab.callStatic(UnkNown Source)    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:48)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:165)    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:173)    at ammoscanner.AmmoScanner.<clinit>(AmmoScanner.groovy)    ... 30 more

有任何想法吗?我使用groovy 1.7.5

解决方法 问题

Looking at the source code,每当提供的ClassLoader的名称(或它的超类)不是groovy.lang.GroovyClassLoader或org.codehaus.groovy.tools.RootLoader时抛出这个异常.即目标类加载器必须是前述类的一个实例(有限制的IMHO).

一个办法

目前我不知道如何使用@ Grape / @ Grab / @ GrabConfig注释来配置一个特定的类加载器.最接近的是使用@GrabConfig(systemClassLoader = true),并确保System类加载器是上述ClassLoader类之一的一个实例.

如果有人知道,请让我知道(我会更新这个答案).

解决办法

以下代码将以编程方式下载您的葡萄,并将其加载到随附的GroovyClassLoader(当然不是你想要的).

def loadGrapes(){    ClassLoader classLoader = new groovy.lang.GroovyClassLoader()    Map[] grapez = [[group : 'org.ccil.cowan.Tagsoup',module : 'Tagsoup',version : '1.2']]    Grape.grab(classLoader: classLoader,grapez)    println "Class: " + classLoader.loadClass('org.ccil.cowan.Tagsoup.jaxp.SAXParserImpl')}
总结

以上是内存溢出为你收集整理的groovy – 找不到合适的类加载器全部内容,希望文章能够帮你解决groovy – 找不到合适的类加载器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1243827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存