java - 使用 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
知道为什么会这样吗?
解决方案
推荐阅读
- flutter - 如何在 Flutter 移动应用项目中使用 testWidgets 测试画布
- identityserver4 - 登录到托管的 Blazor Wasm 应用程序时如何在令牌中附加声明?
- c++ - 尝试使用 memcpy 复制没有最后一个字符的字符串
- javascript - 如何在 vue 中导入外部模块?
- swift - 如何在init中使用观察到的对象值?
- javascript - 如何在javascript中将json的值从字符串转换为对象?
- plotly - 注释因子图而异,情节表达?
- amazon-web-services - lambda 函数仅针对文件名模式的上传触发
- c++ - 无法捕获 ImageMagick Image 构造函数异常
- python-3.x - 在 Python 脚本中将输出扩展到前 5 个电子邮件地址(从前 1 个)