中年プログラマーの息抜き

ブログをはじめました。気の向くままにプログラム関連ネタをメモしていきます。

TOMCAT起動時エラー調査 : Unknow type constant pool

はじめに

TOMCAT起動時にエラーが出ていたので調べました。

環境

・JAVA8+TOMCAT8.5、JSF2.2、spring4.3

現象

TOMCAT起動時のエラー:
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 18 at position 35
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 0 at position 36
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 0 at position 37
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 0 at position 38
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 32 at position 39
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 18 at position 79
com.sun.faces.config.JavaClassScanningAnnotationScanner$ConstantPoolInfo containsAnnotation 重大: Unknow type constant pool 0 at position 80

説明

調査したところJSF2.2+JAVA8のラムダ実装を利用しているとこのエラーが出るようです。JSF 2以降はアノテーションによって環境設定ファイルを書かなくてよくなりました、そのアノテーションがついたファイルを探し出す過程では、全CLASSをスキャンしているようで、その実装でラムダが利用されているとまずいみたいでした。

解決

このエラーが出ても動作事態は問題なさそうなことと、    そもそも今回のシステムでは、フロント(FILLTER、HTMLなど)でJSF、コントローラー(CONTROLLER、VIEWMODELなど)をSPRING、データ(MODELなど)をMYBATIS、ざっくりでこんな構成なため、JSFの環境設定ではアノテーションを利用していないはず・・    ということで、スキャン対象を限定して対応するとエラーが出なくなりました。・・・無効にして試したかったけど、よくわかりません、どうやるんでしょうね。

web.xml:com.sun.faces.annotationScanPackages
Mojarra 2.0.0 Release Notes -- What’s New