亚马逊 linux + java 1.8 + tomcat8 错误

Posted

技术标签:

【中文标题】亚马逊 linux + java 1.8 + tomcat8 错误【英文标题】:Amazon linux + java 1.8 + tomcat8 error 【发布时间】:2016-11-20 12:41:33 【问题描述】:

我使用 EC2 amazon linux + java 1.8 + tomcat8。 安装程序如下:

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
yum install tomcat8-webapps tomcat8-admin-webapps 

但是我的 spring mvc 示例程序不起作用,tomcat8 的示例程序也不起作用。

我不知道为什么。请帮帮我

18-Jul-2016 01:24:20.092 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本:Apache Tomcat/8.0.35 2016 年 7 月 18 日 01:24:20.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器建成时间:2016 年 6 月 10 日 17:49:21 UTC 2016 年 7 月 18 日 01:24:20.097 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器号:8.0.35.0 2016 年 7 月 18 日 01:24:20.097 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称:Linux 2016 年 7 月 18 日 01:24:20.097 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log 操作系统版本:4.4.11-23.53.amzn1.x86_64 2016 年 7 月 18 日 01:24:20.098 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log 架构:amd64 2016 年 7 月 18 日 01:24:20.098 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log Java 主页:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14 .10.amzn1.x86_64/jre 2016 年 7 月 18 日 01:24:20.098 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本:1.8.0_91-b14 18-Jul-2016 01:24:20.098 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 供应商:Oracle Corporation 2016 年 7 月 18 日 01:24:20.103 信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/share/tomcat8 2016 年 7 月 18 日 01:24:20.103 信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/share/tomcat8 2016 年 7 月 18 日 01:24:20.104 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.base=/usr/share/tomcat8 18-Jul-2016 01:24:20.104 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.home=/usr/share/tomcat8 2016 年 7 月 18 日 01:24:20.105 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.endorsed.dirs= 18-Jul-2016 01:24:20.105 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.io.tmpdir=/var/cache/tomcat8/temp 2016 年 7 月 18 日 01:24:20.105 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.config.file=/usr/share/tomcat8/conf/logging 。特性 2016 年 7 月 18 日 01:24:20.105 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 2016 年 7 月 18 日 01:24:20.106 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在 java.library.path 上找不到基于 APR 的 Apache Tomcat Native 库,该库允许在生产环境中获得最佳性能: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2016 年 7 月 18 日 01:24:20.266 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["http-nio-8080"] 2016 年 7 月 18 日 01:24:20.297 INFO [main] org.apache.tomcat.util.net.NioselectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2016 年 7 月 18 日 01:24:20.301 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["ajp-nio-8009"] 2016 年 7 月 18 日 01:24:20.302 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2016 年 7 月 18 日 01:24:20.309 INFO [main] org.apache.catalina.startup.Catalina.load 初始化处理时间为 899 毫秒 18-Jul-2016 01:24:20.356 INFO [main] org.apache.catalina.core.StandardService.startInternal 启动服务 Catalina 2016 年 7 月 18 日 01:24:20.356 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 启动 Servlet 引擎:Apache Tomcat/8.0.35 2016 年 7 月 18 日 01:24:20.406 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 /var/lib/tomcat8/webapps/fwarnotice.war 2016 年 7 月 18 日 01:24:23.966 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少扫描了一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 2016 年 7 月 18 日 01:24:24.021 信息 [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext:初始化开始 2016 年 7 月 18 日 01:24:24.167 信息 [localhost-startStop-1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh 刷新根 WebApplicationContext:启动日期 [2016 年 7 月 18 日星期一 01:24:24 UTC];上下文层次的根 2016 年 7 月 18 日 01:24:24.245 信息 [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions 从 ServletContext 资源 [/WEB-INF/context.xml] 加载 XML bean 定义 2016 年 7 月 18 日 01:24:24.416 INFO [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext:初始化在 394 毫秒内完成 2016 年 7 月 18 日 01:24:24.778 信息 [localhost-startStop-1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'globalWeb':初始化开始 2016 年 7 月 18 日 01:24:24.781 信息 [localhost-startStop-1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh 为命名空间“globalWeb-servlet”刷新 WebApplicationContext:启动日期 [7 月 18 日星期一 01:24 :24 UTC 2016];父级:根 WebApplicationContext 2016 年 7 月 18 日 01:24:24.783 信息 [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions 从 ServletContext 资源 [/WEB-INF/globalWeb-servlet.xml] 加载 XML bean 定义 2016 年 7 月 18 日 01:24:25.249 信息 [localhost-startStop-1] org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping.registerHandler 根映射到处理程序'webConteroller' 2016 年 7 月 18 日 01:24:25.483 信息 [localhost-startStop-1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'globalWeb':初始化在 705 毫秒内完成 2016 年 7 月 18 日 01:24:25.499 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Web 应用程序存档 /var/lib/tomcat8/webapps/fwarnotice.war 的部署已完成 5,092小姐 2016 年 7 月 18 日 01:24:25.502 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 /var/lib/tomcat8/webapps/spring_mvc_test.war 2016 年 7 月 18 日 01:24:26.521 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring_mvc_test]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940) 在 org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.NullPointerException 在 org.apache.jasper.servlet.TldScanner$TldScannerCallback.scanWebInfClasses(TldScanner.java:401) 在 org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:208) 在 org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) 在 org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:106) 在 org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:103) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5261) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) ... 10 更多 2016 年 7 月 18 日 01:24:26.523 严重 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 /var/lib/tomcat8/webapps/spring_mvc_test.war 时出错 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring_mvc_test]] 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940) 在 org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 2016 年 7 月 18 日 01:24:26.524 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Web 应用程序存档 /var/lib/tomcat8/webapps/spring_mvc_test.war 的部署已在 1,022 完成小姐 18-Jul-2016 01:24:26.526 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/docs 2016 年 7 月 18 日 01:24:26.774 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少扫描了一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 18-Jul-2016 01:24:26.775 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/docs 的部署在 249 毫秒内完成 2016 年 7 月 18 日 01:24:26.776 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/sample 2016 年 7 月 18 日 01:24:27.070 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少扫描了一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 18-Jul-2016 01:24:27.075 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/sample 的部署在 299 毫秒内完成 2016 年 7 月 18 日 01:24:27.077 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/host-manager 2016 年 7 月 18 日 01:24:27.327 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 扫描了至少一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 18-Jul-2016 01:24:27.339 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/host-manager 的部署已在 262 完成小姐 18-Jul-2016 01:24:27.344 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/manager 2016 年 7 月 18 日 01:24:27.595 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少扫描了一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 18-Jul-2016 01:24:27.597 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/manager 的部署在 253 毫秒内完成 18-Jul-2016 01:24:27.598 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/ROOT 2016 年 7 月 18 日 01:24:27.849 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少扫描了一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 18-Jul-2016 01:24:27.854 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/ROOT 的部署在 255 毫秒内完成 2016 年 7 月 18 日 01:24:27.854 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/examples 2016 年 7 月 18 日 01:24:27.862 警告 [localhost-startStop-1] org.apache.catalina.startup.SetContextPropertiesRule.begin [SetContextPropertiesRule]Context 将属性“allowLinking”设置为“true”没有找到匹配的属性. 2016 年 7 月 18 日 01:24:27.879 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/examples]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 在 org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092) 在 org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.NullPointerException 在 org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:322) 在 org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:183) 在 org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1887) 在 org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1127) 在 org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:779) 在 org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:306) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5171) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) ... 10 更多 2016 年 7 月 18 日 01:24:27.880 严重 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 /var/lib/tomcat8/webapps/examples 时出错 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/examples]] 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 在 org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092) 在 org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 18-Jul-2016 01:24:27.881 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 /var/lib/tomcat8/webapps/examples 的部署在 27 毫秒内完成 2016 年 7 月 18 日 01:24:27.889 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["http-nio-8080"] 2016 年 7 月 18 日 01:24:27.901 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["ajp-nio-8009"] 18-Jul-2016 01:24:27.902 INFO [main] org.apache.catalina.startup.Catalina.start 服务器在 7592 毫秒内启动

【问题讨论】:

【参考方案1】:

您实际上在 Tomcat 8.0.35 中遇到了一个错误。在Tomcat 8.0 won't start with pure Spring MVC template 有更多信息,在NPE in org.apache.jasper.servlet.TldScanner$TldScannerCallback.scanWebInfClasses 有实际的错误报告

快速解决方案是升级到 Tomcat 8.0.36 或在应用程序的 WEB-INF/classes/META-INF 下创建一个空的 MANIFEST.MF 文件。

【讨论】:

以上是关于亚马逊 linux + java 1.8 + tomcat8 错误的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊裁员 1.8 万余人,史上最大规模,美国技术行业衰退迹象加重?

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

Android N requires the IDE to be running with Java 1.8 or later

解决 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

linux 安装java 1.8

Linux下安装JDK 1.8