如何调试从 eclipse 部署到 tomcat 的问题?



我继承了一个Spring Web应用程序。 这是我导入到 Eclipse 中的 gradle Web 应用程序项目。 我们使用的是 Eclipse 4.7.3、Tomcat 7.0.47 和 JDK 1.8.0.151。

问题是,当我从 Eclipse 将项目部署到 Tomcat 时,某些依赖项 jar 没有复制到项目 lib 目录中。 当 TC 尝试启动 Web 应用程序时,会出现 ClassNotFoundException 错误。

我是 Java Web 应用程序的新手,所以我需要的是一些验证我的项目导入/构建/部署的提示。

这是我到目前为止所做的:

安装
  • Tomcat 7.0.47(安装后不要启动( 安装 Eclipse 4.7.3 JavaEE风格(随Buildship Gradle集成2.0一起提供(
  • 将我的项目导入为 Gradle 项目(文件 -> 导入 -> Gradle
  • ->现有 Gradle 项目(。 我指向项目根目录,选择 Web 项目进行部署,并使用默认设置。
  • 将服务器添加到项目(从服务器视图中单击添加 ->选择
    Tomcat 7.0 ->指向 TC 根目录(
  • 右键单击 Web 目标,然后选择"运行方式"->"运行方式服务器"和"运行方式服务器" 选择我添加的 TC 7 服务器。

此时,项目将生成并部署。 控制台显示 TC 日志。 TC 启动,但在尝试启动 Web 应用时显示错误(例如(:

原因:java.lang.ClassNotFoundException: org.apache.log4j.Level

我可以复制 jar,但我的印象是 Gradle 应该在部署期间抓取依赖项 jar。 我可以验证有些是复制的,但其他的丢失了。 如何调试此问题?

这是我的build.gradle文件的一部分

buildscript {
repositories {
maven {
url projectDownloadUrl 
}
}
dependencies {
classpath lib_license_gradle_plugin
}
}

Web 应用部署到...Eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0. 此处的 lib 目录包含一些已部署的依赖项 jar。 gradle.properties 文件包含一个依赖项列表,例如

lib_apache_tomee=org.apache.openejb:apache-tomee:1.7.1

这显然不是询问和回答 Gradle/Tomcat 问题的地方。 我在发布后不久就想通了这个问题,不想让从那时起来这里寻求帮助的 40 人失望,认为我最终应该回答我自己的问题。

首先,我在如何在 Eclipse 中调试 gradle/maven 应用程序的部署方面走在正确的轨道上。 部署后,您可以检查部署目录中有哪些 jar。 Eclipse 在本地部署到类似于 c:\users\\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core 的位置。

其次,我遇到的直接问题是由于使用了Tomcat而不是Tomcat EE。 答案就在问题中:

lib_apache_tomee=org.apache.openejb:apache-tomee:1.7.1

Tomee是Tomcat + Java企业版,其中包括一些额外的日志记录和其他jar,我缺少的那些。

最新更新