Java 8 码头9+;JDK 8&x2B;Spring4注释

Java 8 码头9+;JDK 8&x2B;Spring4注释,java-8,spring-annotations,spring-4,jetty-9,Java 8,Spring Annotations,Spring 4,Jetty 9,升级到JDK 8后,jetty 9不再能够扫描spring注释:我得到以下错误: MultiException[java.lang.RuntimeException: Error scanning file ApplicationInitializer.class, java.lang.RuntimeException: Error scanning file HibernateConfig.class, java.lang.RuntimeException: Error scanning fi

升级到JDK 8后,jetty 9不再能够扫描spring注释:我得到以下错误:

MultiException[java.lang.RuntimeException: Error scanning file ApplicationInitializer.class, java.lang.RuntimeException: Error scanning file HibernateConfig.class, java.lang.RuntimeException: Error scanning file MailConfig.class, java.lang.RuntimeException: Error scanning file ServicesConfig.class, java.lang.RuntimeException: Error scanning file WebAppConfig.class]
at org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:530)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:441)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:466)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:745)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:282)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:117)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:154)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
当我使用jdk 7时,它工作得很好

它尝试扫描的注释是spring framework 4注释,类似于:

@Configuration
@EnableWebMvc
@ComponentScan("com.cityrentals.rentahouse")
@Import({ HibernateConfig.class, ServicesConfig.class, MailConfig.class })
public class WebAppConfig extends WebMvcConfigurerAdapter {
无论javaassist依赖项是否存在,都会发生此错误

 <dependency>
   <groupId>org.javassist</groupId>
   <artifactId>javassist</artifactId>
   <version>3.18.1-GA</version>
  </dependency>

org.javassist
javassist
3.18.1-GA
非常感谢您的帮助

谢谢
Suresh

由于spring mvc Java(8)与Jetty中捆绑的ASM版本之间的版本差异,您会遇到类似的异常情况

您需要通过下载ASM 5.xx并替换Jetty安装文件夹中的以下2个文件,使版本彼此兼容:

  • asm-4.x.jar与asm-5.xx.jar

  • asm-commons-4.x.jar与asm-commons-5.xx.jar


  • 使用jetty-9.1.x、Java8和Spring4,GingerHead的答案是正确的。为了补充这个答案:

    如果您在9.1.x版本中使用jetty runner,您可能会注意到它使用了asm的捆绑版本(捆绑在jar中)。为了让它与捆绑版本一起工作,我必须在类路径上,在jetty runner jar之前添加asm jar,然后启动jetty runner而不使用-jar标志,并指出主类(org.eclipse.jetty.runner.runner)

    因此,这个正在运行:

    java -cp lib/asm-5.x.jar:lib/asm-commons-5.x.jar:lib/asm-tree-5.x.jar:lib/jetty-runner.jar org.eclipse.jetty.runner.Runner foo.war
    
    java -cp -jar lib/jetty-runner.jar foo.war
    or
    java -cp lib/asm-5.x.jar:lib/asm-commons-5.x.jar:lib/asm-tree-5.x.jar -jar lib/jetty-runner.jar foo.war
    
    以下情况不起作用:

    java -cp lib/asm-5.x.jar:lib/asm-commons-5.x.jar:lib/asm-tree-5.x.jar:lib/jetty-runner.jar org.eclipse.jetty.runner.Runner foo.war
    
    java -cp -jar lib/jetty-runner.jar foo.war
    or
    java -cp lib/asm-5.x.jar:lib/asm-commons-5.x.jar:lib/asm-tree-5.x.jar -jar lib/jetty-runner.jar foo.war
    

    快速更新,此问题现已在Jetty的更高版本中得到解决(更具体地说,在9.2.0.v20140526版本中)。新版本不需要对Java 8、Jetty 9和Spring 4的asm JAR进行特殊处理—它应该是开箱即用的。Jetty-9.2.2(可能更早)中似乎解决了这个问题