Java 8にアップグレードしようとしました。Tomcat7サーバーを起動するときに、Java 7-compiled .warファイルを使用すると、以下のミステリアスなエラーが発生します。
これが機能すると期待すべきですか?この post は、Tomcat 7が1.6以降で動作することを示しています。 Tomcatのせいなのか、それとも.warなのかわかりません。別のJava私が得るバージョンを切り替える:
Tomcatのせいですか、それとも.warですか?
Caused by: org.Apache.Tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
at org.Apache.Tomcat.util.bcel.classfile.Constant.readConstant(Constant.Java:131)
at org.Apache.Tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.Java:60)
at org.Apache.Tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.Java:209)
at org.Apache.Tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.Java:119)
at org.Apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.Java:2032)
at org.Apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.Java:1923)
at org.Apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.Java:1891)
at org.Apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.Java:1877)
at org.Apache.catalina.startup.ContextConfig.webConfig(ContextConfig.Java:1270)
at org.Apache.catalina.startup.ContextConfig.configureStart(ContextConfig.Java:855)
at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:345)
at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:119)
at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:90)
at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5161)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
Tomcat 7.0.26でこのエラーが発生していました。
あなたの質問に答えるために、Tomcatは非難することです: https://issues.Apache.org/bugzilla/show_bug.cgi?id=53735
バージョン7.0.53へのアップグレードで修正されました(リンクされた問題によると、修正は7.0.30以降にあるはずです)。
私のコンピューターにはJava 8がありましたが、run my Tomcat using Java 7 。
次のソリューションは私のために働いた。
In %CATALINA_HOME%\bin\
(例:C:\ Tomcat\bin)add setenv.bat次の内容を持ちます:
@echo off
set Java_HOME=C:\Program Files\Java\jdk1.7.0_03
set JRE_HOME=%Java_HOME%\jre
exit /B 0
startup.batを実行すると、次の呼び出しが発生します。
startup.bat
|
└── catalina.bat
|
└── setenv.bat
見る:
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"
私もこの問題に直面しました。エラーを追跡したところ、ICU4J jarのMaven依存関係を最新バージョンにアップグレードする必要があることがわかりました。
そして今、エラーはなくなりました:
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>56.1</version>
</dependency>