grails 3.3.x中使用xss-sanitizer插件的问题

时间:2018-04-11 11:41:49

标签: java spring spring-boot grails grails-3.3

我在v3.2.11的grails应用程序中使用grails-xss-sanitizer。当我尝试将我的应用程序升级到最新的3.3.4时。它报告了以下问题:

  

[2018-04-11 11:16:37,627] [主要] ERROR o.s.b.SpringApplication -   应用程序启动失败java.lang.NoClassDefFoundError:   组织/ springframework的的/ boot /上下文/嵌入式/ FilterRegistrationBean           at grails.plugin.xss.sanitizer.XssSanitizerGrailsPlugin $ _doWithSpring_closure1.doCall(XssSanitizerGrailsPlugin.groovy:38)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           at java.lang.reflect.Method.invoke(Method.java:498)           at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1427)           在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)           at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)           在org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)           at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)           在groovy.lang.Closure.call(Closure.java:418)           在groovy.lang.Closure.call(Closure.java:412)           在grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:759)           在grails.spring.BeanBuilder.beans(BeanBuilder.java:588)           at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:531)           在org.grails.plugins.DefaultGrailsPlugin.doWithRuntimeConfiguration(DefaultGrailsPlugin.java:559)           在org.grails.plugins.AbstractGrailsPluginManager.doRuntimeConfiguration(AbstractGrailsPluginManager.java:167)           at grails.boot.config.GrailsApplicationPostProcessor.postProcessBeanDefinitionRegistry(GrailsApplicationPostProcessor.groovy:171)           at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:272)           在org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:122)           在org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)           在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)           at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)           在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)           在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)           在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)           在grails.boot.GrailsApp.run(GrailsApp.groovy:84)           在grails.boot.GrailsApp.run(GrailsApp.groovy:393)           在grails.boot.GrailsApp.run(GrailsApp.groovy:380)           at grails.boot.GrailsApp $ run.call(Unknown Source)           在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)           在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)           在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)           在com.the41.fraudnet.Application.main(Application.groovy:28)引起:java.lang.ClassNotFoundException:   org.springframework.boot.context.embedded.FilterRegistrationBean           at java.net.URLClassLoader.findClass(URLClassLoader.java:381)           at java.lang.ClassLoader.loadClass(ClassLoader.java:424)           at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:335)           at java.lang.ClassLoader.loadClass(ClassLoader.java:357)           ...省略了34个常见帧

     

失败:构建因异常而失败。

     
      
  • 出了什么问题:任务执行失败':bootRun'。      
        

    处理'命令' /opt/jdk1.8.0_131/bin/java''完成非零退出值1

      
  •   

我在grails 3.3.x升级说明中看到了:

Spring Boot 1.5.x - 在grails 3.3.x中支持

  

Spring Boot 1.5.x删除了许多已弃用的类,特别是   其中的几个类   org.springframework.boot.context.embedded package。

     

如果您的应用程序引用了其中的任何类   包你需要改变你要使用的进口   而是org.springframework.boot.web.servlet。

     

org.springframework.boot.context.web包中的所有类都有   根据Spring Boot 1.4发行说明弃用并重新定位。

xss-sanitizer插件正在使用包中定义的类" org.springframework.boot.context.embedded"

那么,是否有关于grails 3.3.x的xss-sanitizer插件升级的计划或针对此问题的任何解决方法?

1 个答案:

答案 0 :(得分:1)

除了升级插件外,没有合理的解决方法。

该插件似乎正在升级;请参阅此处的源代码https://github.com/rpalcolea/grails-xss-sanitizer/blob/master/gradle.properties,它引用了Grails版本3.3.0。您可能还想跟踪或评论此问题:https://github.com/rpalcolea/grails-xss-sanitizer/issues/1,因为它描述了您所看到的问题。