EC2 Tomcat7 Spring没有找到WebApplicationInitializer,但在本地工作

时间:2014-01-25 17:16:08

标签: spring maven deployment amazon-ec2 tomcat7

我很沮丧。

本地

全新安装Tomcat 7.0.50 使用maven构建WAR,将WAR放入Tomcat,启动Tomcat,查看我应该的所有日志,部署正常,可以在本地命中。 server.xml中没有定义Context。 WAR中没有上下文,配置了xml-free Spring 3.1.0。

远程EC2服务器

Fresh t1.micro instance - > 'sudo yum update' - > 'sudo yum install tomcat7'。 安装Tomcat 7.0.47。 比较server.xml,tomcat的web.xml,所有文件都与我的本地文件完全相同。 放下WAR。启动tomcat。 没有。 localhost日志文件显示 '在类路径上没有检测到WebApplicationInitializer'。

这些设置本质上有什么不同,这会破坏我的EC2盒子在WAR中找到类?它将WAR分解为一个文件夹,然后将球丢弃。

我已经在这个工作了几个小时(字面意思是超过6个)并且没有运气。

尝试以下

将各种Context标签组合添加到server.xml。

将战争部署为“ROOT.war”

点击我能想象到的每个网址组合。 (我点击tomcat服务器,除了“tomcat:8080”之外,到处都是tomcat 404我只是得到一个白屏404.

我找不到很多关于tomcat类路径的详尽解释。

免责声明:我找到了一些,但他们只是无益。我的WebApplicationInitializer类在WAR的WEB-INF /类中,显然Spring / Tomcat没有找到它。

我被击败了。

任何想要解决这个问题的人都会感激不尽。

2 个答案:

答案 0 :(得分:1)

我花了几个多小时试图弄清楚为什么会这样。正如所料,解决方案如此简单,让我想哭:-) 在我的案例中我要解决的问题就是在运行我的tomcat(Apache Tomcat / 7.0.26)的ubuntu机器上将我的Java升级到7.0,一旦我这样做,一切都按预期工作。

要将ubuntu java更改为版本7,请执行以下操作:

sudo apt-get purge openjdk*
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-set-default

这将执行以下任务:

  1. 删除所有以前的openjdk安装

  2. 安装add-apt-repository命令

  3. 添加具有oracle java包的外部存储库

  4. 安装Java 7

  5. 如果执行此操作后突然出现错误“*未找到JDK - 请在尝试启动Tomcat7服务时设置JAVA_HOME”,只需更新/ etc / default / tomcat7下的JAVA_HOME位置

答案 1 :(得分:0)

幸运的是,我没有花太多时间在这上面,我几乎没有哭过。

我的问题出在Tomcat 8上,但我没有意识到安装的JDK是openjdk-1.7.0,当我需要Java 8.安装openjdk-1.8.0解决了我的问题。

让我失望的是日志显示发现JerseyAutoConfiguration(在Spring Boot中) ,但我的初始化程序没有。