【问题标题】:Arquillian: Problems with Classloader / Classpath during deploying a WARArquillian:部署 WAR 期间的类加载器/类路径问题
【发布时间】:2017-04-12 09:34:37
【问题描述】:

我正在通过 MavenImporter 以下列方式部署测试存档:

public static WebArchive createServiceDeployment() { 
  WebArchive serviceArchive = ShrinkWrap .create(MavenImporter.class)  
            .configureFromFile(new File("C:/Users/vbaghdas/.m2/settings.xml")) 
            .loadPomFromFile("../dsuite-parent-demo-service/dsuite-parent-demo-service-impl/pom.xml") 
            .importBuildOutput() 
            .as(WebArchive.class); 
  System.out.println(serviceArchive.toString(true));  
  return serviceArchive;  
}  

在部署期间发生以下异常:

Caused by: java.lang.ClassCastException: org.springframework.context.annotation.ScopedProxyMode cannot be cast to org.springframework.context.annotation.ScopedProxyMode
  at org.springframework.context.annotation.AnnotationScopeMetadataResolver.resolveScopeMetadata(AnnotationScopeMetadataResolver.java:86) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:250) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:144) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:275) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:237) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:204) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:173) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:150) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:130) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86) ~[spring-boot-1.4.0.RELEASE.jar:1.4.0.RELEASE]
  at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152) ~[tomcat-embed-core-8.5.4.jar:8.5.4]

  ... 10 more

我检查了我的类路径 - 我只有 1 个有问题的 spring-context jar 版本,而且我确实在类路径中只有一次 - 所以我现在对问题的理解更少了

【问题讨论】:

  • 我只有 1 个版本的有问题的 spring-context jar,而且我确实在类路径中只有一次你的意思是 spring-context.jar 只出现在仅您的应用程序服务器的类路径?但是从例外看来,您的战争似乎还包括 spring-context.jar 文件?

标签: java maven integration jboss-arquillian


【解决方案1】:

尝试运行 maven dependency:tree 以获取依赖于该项目的 jar,以确保仅加载一个 spring jar 而没有重复的传递依赖 jar

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2023-03-26
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多