ubuntu更新后,tomcat 8停止工作

时间:2018-10-04 10:53:06

标签: java ubuntu tomcat java-8 tomcat8

我最近将ubuntu桌面更新为18.04。之后,我的tomcat在启动时失败。每次我使用命令[Plugin:external-monitor-job, Plugin:docker-workflow, Plugin:pipeline-rest-api, Plugin:javadoc, Plugin:resource-disposer, Plugin:conditional-buildstep, ... ] 重新启动tomcat时,日志文件都会出现以下错误-

service tomcat8 restart

然后我安装了jdk8并运行像这样的update-alternatives命令-

    Caused by: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture.get(LRUHybridCache.java:164)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache.compute(LRUHybridCache.java:303)
    ... 135 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3119)
    at java.base/java.lang.Class.getDeclaredMethods(Class.java:2268)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities$3.run(ClassReflectionHelperUtilities.java:108)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities$3.run(ClassReflectionHelperUtilities.java:104)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities.secureGetDeclaredMethods(ClassReflectionHelperUtilities.java:104)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities.getDeclaredMethodWrappers(ClassReflectionHelperUtilities.java:133)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities.getAllMethodWrappers(ClassReflectionHelperUtilities.java:192)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperUtilities.getAllMethodWrappers(ClassReflectionHelperUtilities.java:193)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperImpl$3.compute(ClassReflectionHelperImpl.java:84)
    at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperImpl$3.compute(ClassReflectionHelperImpl.java:80)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture$1.call(LRUHybridCache.java:115)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture$1.call(LRUHybridCache.java:111)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

当我再次重新启动tomcat时,我看到了相同的错误。这是我的dimension:bin$ sudo update-alternatives --config javac There are 2 choices for the alternative javac (providing /usr/bin/javac). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1101 manual mode * 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 manual mode Press <enter> to keep the current choice[*], or type selection number: dimension:bin$ sudo update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode * 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Press <enter> to keep the current choice[*], or type selection number: 文件夹的内容-

jvm

我的ls -lh /usr/lib/jvm/ total 8.0K lrwxrwxrwx 1 root root 25 Apr 8 18:46 default-java -> java-1.11.0-openjdk-amd64 lrwxrwxrwx 1 root root 21 Aug 24 23:06 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64 drwxr-xr-x 9 root root 4.0K Oct 4 10:56 java-11-openjdk-amd64 lrwxrwxrwx 1 root root 20 Oct 28 2016 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64 drwxr-xr-x 7 root root 4.0K Oct 4 16:03 java-8-openjdk-amd64 环境目前设置为空。

该如何解决我的问题。

1 个答案:

答案 0 :(得分:2)

异常堆栈跟踪java.base的{​​{1}}部分表明您仍在使用JDK 11。

确保Tomcat 8与JDK 8一起运行。尝试使用at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)调试Tomcat启动脚本,以了解如何确定Java位置,也许它是在set -x中设置的?