自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日志

摆脱 Tomcat 中的 Spring 日志

tomcat之 JDK8.0安装tomcat-8.5.15安装

linux下 tomcat 日志乱码/中文链接404

ELK之三-----JAVA日志多行合并tomcat json日志收集与处理