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

标签 java eclipse tomcat gradle gradle-eclipse

我继承了一个 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 网络应用程序的新手,所以我需要一些提示来验证我的项目导入/构建/部署。

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

  • 安装 Tomcat 7.0.47(安装后不要启动它)安装 Eclipse 4.7.3 JavaEE 风格(安装了 Buildship Gradle 集成 2.0)
  • 将我的项目导入为 Gradle 项目(文件 -> 导入 -> Gradle -> 现有的 Gradle 项目)。我指向项目根目录,选择 web 项目进行部署,并使用默认设置。
  • 向项目添加服务器(从服务器 View 单击添加 -> 选择
    Tomcat 7.0 -> 指向 TC root)
  • 右键单击 Web 目标并选择“运行方式”->“运行方式服务器”,然后 选择我添加的 TC 7 服务器。

此时项目已构建并部署。控制台显示 TC 日志。 TC 启动但在尝试启动网络应用程序时显示错误(例如):

Caused by: 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,我缺少的那些。

关于java - 如何调试从 eclipse 部署到 tomcat 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652469/

相关文章:

spring - 使用 tomcat 7 部署时出现 slf4j 错误

Java Applet 到 BufferedImage

java - EclipseLink 和 Hibernate 集成

java - 如何将字符串切成这样的数组?

eclipse - Eclipse 中的服务器窗口

java - 如何在Eclipse 2020-09中使用Java版本15

java - 部署spring war时Tomcat 6错误

java - 如何在 Tomcat 的多个请求中不保留静态变量?

java - 如何调试 java.sql.SQLException : could not resolve the connect identifier

java - HikariCP 自动提交用法与常规 java 连接自动提交用法相同吗?