tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Berneburg, Cris J. - US" <>
Subject Re: help with org.apache.jasper.compiler.JDTCompiler issue?
Date Thu, 20 Sep 2018 15:05:00 GMT

Thanks for jumping in to help out.  :-)

cjb> After reverting Java and our app, the app still
cjb> won't run and still throws compilation errors.

cjb> * Staging Server - after rollback
cjb> JRE 8u171, 32 bit
cjb> Tomcat 6.0.32, 32 bit (unchanged)
cjb> App v3.3.2

kk> My guess is that the Eclipse Compiler for Java in
kk> your Tomcat 6.0.32 was released N years ago and
kk> cannot deal with Java 8u181. From the message it
kk> looks like it cannot parse some class file.

Except that we reverted both Java and our application back to the previous versions, 8u171
and 3.3.2 respectively, and still get the error.

cjb> * Partial stack trace:
cjb> org.apache.jasper.compiler.JDTCompiler$1 findType
cjb> SEVERE: Compilation error
cjb> org.eclipse.jdt.internal.compiler.classfmt.classFormatException
cjb> at org.eclipse.jdt.internal.compiler.classfmtClassFileReader.<init>(
cjb> at org.apache.jasper.compiler.JDTCompiler$1.findType(
cjb> at org.apache.jasper.compiler.JDTCompiler$1.findType(
cjb> at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(
cjb> at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(
cjb> at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(
cjb> at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(
cjb> at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(
cjb> at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(
cjb> at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(
cjb> at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(
cjb> at org.eclipse.jdt.internal.compiler.Compiler.process(
cjb> [...]

Is it possible that something on the server changed while the older app was running, but the
effects of the change were not revealed until after the reboot?  That is, maybe everything
was resident and running in memory, but something on the disk changed while the old version
was still in use, so the old version was broken on disk before we even started doing upgrades.
 In effect, the rug got pulled out from underneath the app, but TC or the app didn't notice
until after the new app was reloaded into memory.  Is that possible?

kk> Option 2: Upgrade!!
kk> Tomcat 6 has reached end of life.

I knew someone would say that.  :-)  Yeah, that's "next" down the road, once this round of
upgrades is done.

kk> Option 3: Switch to using a javac compiler from JDK instead of ECJ compiler.
kk> It is possible via configuration, but YMMV. It is a rarely used option.

Huh, I was wondering about the built-in compiler.  Rather than do something non-standard,
I'd like to employ a simple solution.

Cris Berneburg
CACI Lead Software Engineer

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message