自java 8以来的tomcat日志中的“位置X的未知类型常量池”
Posted
技术标签:
【中文标题】自java 8以来的tomcat日志中的“位置X的未知类型常量池”【英文标题】:"Unknow type constant pool at position X" in tomcat logs since java 8 【发布时间】:2017-04-19 16:34:35 【问题描述】:我在 Tomcat 服务器上部署了一个基于 Java JSF2 Web 的应用程序,由于我们迁移到 Java 8 / Tomcat 8,因此这个错误在 tomcat 输出中出现了很多:
déc. 05, 2016 10:51:07 AM com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation
GRAVE: Unknow type constant pool 0 at position 178
我尝试了不同的方法来修复此警告,但它总是回来。
此日志是否是任何问题的征兆?只是正常的输出吗?有没有办法解决这个问题?
【问题讨论】:
在英文中,错误信息是 SEVERE(而不是 GRAVE)。 【参考方案1】:我也有同样的问题。我将 pom.xml 文件更新到 2.2.11 后解决了。
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.11</version>
<artifactId>jsf-impl</artifactId>
<version>2.2.11</version>
postConstruct 没有在某个 ManagedBean 中执行,没有任何错误。
【讨论】:
【参考方案2】:根据我的研究,这似乎是 JSF 实现中的一个错误,并已在 JSF 版本 2.3.0-m02 中修复
报告的错误: http://github.com/javaserverfaces/mojarra/issues/3736 https://github.com/javaserverfaces/mojarra/issues/3780
从何处获取 JSF 实现的固定版本 http://repo1.maven.org/maven2/javax/faces/javax.faces-api/2.2/ http://repo1.maven.org/maven2/org/glassfish/javax.faces/2.3.0-m02/
或使用(2.3.0-m02 或更高版本)更新 maven POM 依赖项:
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.0-m02</version>
【讨论】:
注意:报告错误的链接不再有效。搬迁到github.com/javaserverfaces/mojarra/issues/3736和github.com/javaserverfaces/mojarra/issues/3780 我已经修改了答案以反映新的网址 注意:报告错误的链接不再起作用(再次)。搬迁到github.com/eclipse-ee4j/mojarra/issues/3736和github.com/eclipse-ee4j/mojarra/issues/3780【参考方案3】:我遇到了同样的问题
今天我将我的 pom.xml 文件更新为 jsf 版本:2.2.15 并且错误日志消失了。
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>$jsf.version</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>$jsf.version</version>
<scope>provided</scope>
</dependency>
【讨论】:
以上是关于自java 8以来的tomcat日志中的“位置X的未知类型常量池”的主要内容,如果未能解决你的问题,请参考以下文章
在具有 Java 8 的嵌入式 Tomcat 8.5 上启用 TLS 握手的可观察性(日志记录/指标)
Spring Boot自定义的Tomcat打印catalina和tomcat日志