Tomcat升级Ubuntu版本后8.5无法启动

Tomcat 8.5 not starting after upgrading Ubuntu version

我刚刚将 Ubuntu 发行版从 16.04 升级到 18.04。现在,以前工作正常的 Tomcat 8.5 无法正常启动。我得到的错误是

30-Apr-2018 19:24:25.195 SEVERE [http-nio-8080-exec-1] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
 java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;                                                                                         │
    at org.apache.coyote.http11.Http11InputBuffer.recycle(Http11InputBuffer.java:280)                                                                               │
    at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1709)                                                                                  │
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:972)                                                                      │
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:940)                                                                      │
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)                                                                          │
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)                                                                              │
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)                                                                              │
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)                                                                              │
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)                                                                           │
    at java.lang.Thread.run(Thread.java:748) 

有人知道为什么会这样吗?

事实证明这是 Debian 上游更新的问题。因此,基本上 Ubuntu 18.04 存储库中可用的 tomcat 版本 8.5.30-1 是在 Java 9 上编译的。因此,如果您仍然 运行 您的应用程序 Java 8 和我一样,你也会遇到这个问题。

参考:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895866

Ubuntu 18.04 中的 Tomcat8 与 JDK10 一起正常工作,JDK10 在 Ubuntu 升级后设置为默认值。