使用Eclipse在Tomcat上进行奇怪的部署

时间:2017-12-08 10:47:56

标签: java eclipse maven tomcat

我在Eclipse中使用maven工作了一年的Java(Java 8)Web应用程序。我创建了这个webapp并从项目开始就使用Maven v 3.5。我通常在tomcat 8.5服务器上部署我的Web应用程序('Run as =>在服务器上运行')。

我总是用我的pom.xml管理我的依赖项,防止使用Eclipse的hte build path配置菜单做一些奇怪的事情。

问题从昨天开始:我添加了一个依赖于我之前制作和安装的其他java / maven项目,并在我的pom.xml上添加这些行:

    <dependency>
        <groupId>tlnPdf</groupId>
        <artifactId>tlnPdf</artifactId>
        <version>1.0</version>
    </dependency>

当我从其他项目中添加一个新的依赖时,我的eclipse确实有用,我在部署webapp时遇到了一个问题,一些关于我的其他项目的pom.properties的消息(对不起但我记不住了)。在这种情况下,和我一直一样,我只需要关闭我的webapp项目,从命令提示符启动mvn eclipse:clean,然后重新打开我的项目;问题消失了。

Eclipse不会对从新依赖项中导入类的类显示问题。

此外,我在webapp的开头有一个类的监听器,在我的web.xml上声明:

  <listener>
    <listener-class>com.package.InitTomcat</listener-class>
</listener>

这个监听器是功能性的,我最后没有修改它。

但昨天出现了一个新问题;当我想在我的服务器上部署我的webapp时,我有很多这样的警告: org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [...] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache。然后,一个错误告诉我InitTomcat类不存在: java.lang.ClassNotFoundException: com.package.InitTomcat

所以,首先我认为缓存警告导致了问题。我做了this stackoverflow post解释的内容,警告消失了;但不是错误。

在eclipse之外,在命令提示符下,我尝试编译我的项目并使用app.war获取mvn clean install文件。编译没有显示任何错误,战争是正确的。我在tomcat上手动部署了我的战争,没有出现任何问题。

因此,我查看了两个已部署的目录(一个来自eclipse,另一个来自我的app.war),我在部署的存储库树上看到了一些好奇的东西:

在良好部署的webapp(来自app.war)上,我有类似的东西:

 |*some directories and files
 |*META-INF
 |*WEB-INF
     |*classes
       |com (etc...)
     |*lib
     |web.xml

在eclipse中部署的webapp中:

*some directories and files
*META-INF
*WEB-INF
    |*classes
       |*.settings (why the hell does this directory are here ?)
       |*bin
          |*.settings
          |*src
          |*target
              |*classes
                  |*com ect... (my .class files are here !!)
              |*generated-sources
              |*m2e-wtp
              |*maven-archiver
              |*maven-status
              |*myapp (this directory have the same content as the "good web app deployed")
              |*test-classes
              |*WebContent
          |*temp
          |*webContent
          |pom.xml
          |.project
       |*src
       |*target
       |*temp
       |*WebContent
              |*...
    |*lib
    |web.xml

“好”的webapp大小为275Mb,另一个是865Mb

我怀疑当eclipse部署我的web-app时会出现这个问题,并解释说它无法找到InitTomcat类,因为它似乎位于错误的位置。但我不知道为什么现在决定这样做。

我尝试从eclipse中删除项目,清除eclipse等等但没有结果。我试过3个不同版本的tomcat:8.5.14,8.2.23和9.0.2,总是有相同的行为

当我感到沮丧的时候,我下载了eclipse的最新版本,然后用maven将我的webapp项目导入其中;但它有相同的结果。

最后,我的问题很简单:有没有人知道它发生了什么,以及如何解决它?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我终于看到了我的问题所在:寻找属性&gt; &#34;部署组装&#34;在我的项目中,部署模式很奇怪。我不知道他什么时候改变,也不知道为什么,但我做了以下重新启动&#34;干净利落的&#34;它们:

  1. 删除eclipse中的项目(但不是源代码)
  2. 手动删除.settings目录,.classpath和.project文件
  3. 在eclipse中导入为maven项目
  4. 这些都是伎俩。问题是之前,我没有从eclipse中删除属性文件,导入项目时重新加载了包配置。