首页 > 解决方案 > 使用 JSF+Spring-Boot、PrimeFaces 和 Joinfaces 扫描坏幻数的类路径

问题描述

Spring-Boot+JSF 应用程序使用 Primefaces 和 JoinFaces 启动器,并在可运行的 WAR 中嵌入了 Tomcat。我实际上有两个使用此堆栈的 Web 应用程序,并且都表现出相同的问题。

在启动或部署期间,似乎有东西正在扫描 WAR 中的每个文件,试图读取类文件。它找到一堆非类文件,并且在扫描这些文件时我在日志中看到错误。

我看到很多重复的错误消息,来自 TypeAnnotationScanner 和 SubTypeScanner:

2019-04-15 11:03:49,287 [localhost-startStop-1] DEBUG org.reflections.Reflections - could not scan file META-INF/resources/primefaces-extensions/documentviewer/locale/bs.locale.txt in url jar:file:/C:/Users/my.name/.gradle/caches/modules-2/files-2.1/org.primefaces.extensions/primefaces-extensions/6.2.4/37d4674a246d7a0c15255f7a9296c41e3a39b1b1/primefaces-extensions-6.2.4.jar!/ with scanner SubTypesScanner
org.reflections.ReflectionsException: could not create class object from file META-INF/resources/primefaces-extensions/documentviewer/locale/bs.locale.txt
    at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:32)
    at org.reflections.Reflections.scan(Reflections.java:253)
    at org.reflections.Reflections.scan(Reflections.java:202)
    at org.reflections.Reflections.<init>(Reflections.java:123)
    at org.joinfaces.autoconfigure.servlet.initializer.JsfClassFactory.computeClasses(JsfClassFactory.java:180)
    at org.joinfaces.autoconfigure.servlet.initializer.JsfClassFactory.getAnnotatedClassMap(JsfClassFactory.java:152)
    at org.joinfaces.autoconfigure.servlet.initializer.JsfClassFactory.getAnnotatedClasses(JsfClassFactory.java:210)
    at org.joinfaces.autoconfigure.servlet.initializer.JsfClassFactory.getAllClasses(JsfClassFactory.java:199)
    at org.joinfaces.autoconfigure.mojarra.MojarraInitializerRegistrationBean.getClasses(MojarraInitializerRegistrationBean.java:50)
    at org.joinfaces.autoconfigure.servlet.initializer.ServletContainerInitializerRegistrationBean.lambda$customize$0(ServletContainerInitializerRegistrationBean.java:58)
    at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5245)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.reflections.ReflectionsException: could not create class file from bs.locale.txt
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:102)
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:24)
    at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:30)
    ... 18 common frames omitted
Caused by: java.io.IOException: bad magic number: 2320436f
    at javassist.bytecode.ClassFile.read(ClassFile.java:825)
    at javassist.bytecode.ClassFile.<init>(ClassFile.java:154)
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:100)
    ... 20 common frames omitted

知道为什么会这样吗?

标签: javaspring-bootjoinfaces

解决方案


推荐阅读