Latest tomcat version for ubuntu 12.04 is 7.0.26, which doesn't support java 8:
http://stackoverflow.com/questions/23484098/invalid-byte-tag-in-constant-pool-tomcat7-war-jdk-incompatibilty
https://issues.apache.org/bugzilla/show_bug.cgi?id=53735
So to use java 8 you have to upgrade tomcat. Newest version can be found in Ubuntu 14.04 (see Packages.gz).
To add this repo, edit
Next, this version of tomcat uses eclipse compiler to compile jsp. Bundled version has issue with java 8:
SEVERE: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1095) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1617) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18 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.processAnnotationsFile(ContextConfig.java:2011)
https://issues.apache.org/bugzilla/show_bug.cgi?id=53735
So to use java 8 you have to upgrade tomcat. Newest version can be found in Ubuntu 14.04 (see Packages.gz).
To add this repo, edit
/etc/apt/sources.list
, adddeb http://ru.archive.ubuntu.com/ubuntu trusty main multiverseat the end of the file. Then
sudo apt-get update sudo apt-get install tomcat7
Next, this version of tomcat uses eclipse compiler to compile jsp. Bundled version has issue with java 8:
org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:372) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:231) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:187) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:102) at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49) at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122)
All you have to do is to add
ecj-4.4M7.jar
to /usr/share/java
. Just google this file, I've founded it here: https://devtools.jahia.com/nexus/content/groups/public/org/eclipse/jdt/core/compiler/ecj/4.4M7/.
Also update symlinks
eclipse-ecj.jar
to point to ecj-4.4M7.jar
instead of eclipse-ecj-3.5.1.jar
.