【问题标题】:EC2 Tomcat7 Spring Not Finding WebApplicationInitializer, But Works LocallyEC2 Tomcat7 Spring没有找到WebApplicationInitializer,但在本地工作
【发布时间】:2014-02-16 16:20:51
【问题描述】:

我对此感到沮丧。

本地

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

远程 EC2 服务器

新鲜的 t1.micro 实例 -> 'sudo yum update' -> 'sudo yum install tomcat7'。 安装 Tomcat 7.0.47。 对比server.xml,tomcat的web.xml,所有文件都和我本地的一模一样。 放弃战争。启动tomcat。 没有。 localhost 日志文件显示 '在类路径上未检测到 WebApplicationInitializer'。

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

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

尝试了以下

将上下文标签的各种组合添加到 server.xml。

将战争部署为“ROOT.war”

点击我能想象到的每一个 URL 组合。 (我点击了 tomcat 服务器并在任何地方都得到了 tomcat 404,除了“tomcat:8080”,我只得到一个白屏 404。

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

免责声明:我找到了一些,但它们没有帮助。我的 WebApplicationInitializer 类位于 WAR 的 WEB-INF/classes 中,显然 Spring/Tomcat 没有找到它。

我被打败了。

任何试图弄清楚这一点的人都会感激不尽。

【问题讨论】:

  • 你有 web.xml 吗?可以给我们看看吗?
  • 我唯一的web.xml是tomcat里面的那个。我正在使用一种无​​ xml 的 Spring 设置,在某种程度上描述了 Here 我唯一拥有的 web.xml 是内置于 Tomcat 中的库存,我只编辑了欢迎文件列表以使其具有 start.action唯一的项目。另外,我无法弄清楚 cmets 中的换行符>。
  • @SotiriosDelimanolis 给你加标签以寻求回复,对不起,我在 StackOverflow 上无能:P
  • 我遇到了同样的问题。我正在运行带有 Java 6 的 Tomcat 7。解决方案是升级到 Java 7 并找到了 WebApplicationInitializer。

标签: spring maven deployment amazon-ec2 tomcat7


【解决方案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

如果你在尝试启动 Tomcat7 服务时突然收到错误“* no JDK found - please set JAVA_HOME”,只需更新 /etc/default/tomcat7 下的 JAVA_HOME 位置

【讨论】:

    【解决方案2】:

    幸好我没有花太多时间在这上面,我几乎没有哭。

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

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

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2018-10-08
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 2015-09-12
      • 2015-10-19
      相关资源
      最近更新 更多