我继承了一个 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/